https://programmers.co.kr/learn/courses/30/lessons/72410?language=python3
신규 아이디 추천이라는 2021 카카오 블라인드 채용 문제인데, 정규표현식을 쓰면 뚝딱 풀 수 있는데 맨날 까먹는다..
안 까먹고 싶어서 노트에 정리하고 에버노트에 정리하고 보면 읽고 쓰고 해도..잘 보이는 곳에 정리나 해두자 싶어서 정리한다.
[a-zA-Z] : 알파벳 모두
[0-9] : 숫자
[^0-9] : 숫자가 아닌 것
[a-zA-Z0-9] : 문자와 숫자
[^a-zA-Z0-9] : 문자와 숫자가 아닌 문자
정규 표현식의 Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다.
a.b
# a + 모든 문자 + b
# a와 b라는 문자 사이에 어떤 문자가 들어가도 모두 매치된다는 의미
그렇다면 .이라는 문자를 사용하고 싶다면 어떻게 해야할까
a[.]b
# a + . + b
# a.b 문자열과 매치되고, a0b, aab와 같은 문자열과는 매치되지 않는다는 의미
정규식에는 반복을 의미하는 * 문자가 사용된다.
ca*t
은 바로 앞에 있는 문자 a가 0부터 무한대로 반복될 수 있다는 의미이다.
+도 반복을 나타내는 메타 문자인데, *와는 다르게 최소 1번 이상 반복될 때 사용한다.
re.sub(pattern, repl, string)
string의 가장 왼쪽부터 pattern과 일치하는 문자를 repl로 치환하여 얻은 문자열을 반환합니다.