728x90
반응형
기호 | 의미 | 예제 | 일치하는 문자열 예제 |
* | 바로 앞에 있는 문자, 하위 표현식, 대괄호로 묶인 문자들이 0번 이상 나타남 | a*b* | aaaaaaaa, aaabbbb, bbbbb |
+ | 바로 앞에 있는 문자, 하위 표현식, 대괄호로 묶인 문자들이 1번 이상 나타남 | a+b+ | aaaaab, aaabbb, abbbb |
[] | 대괄호 안에 있는 문자 중 하나가 나타남 | [A-Z]* | APPLE, ABCD, ASDFASDF |
() | 그룹으로 묶인 하위 표현식. 정규 표현식을 평가할 때는 하위 표현식이 가장 먼저 평가됨 | (a*b)* | aabaab, abaab, ababaaab |
{m, n} | 바로 앞에 있는 문자, 하위 표현식, 대괄호로 묶인 문자들이 m번 이상, n번 이하 나타남 | a{2,3}b{2,3} | aabbb, aaabbb, aabb |
[^] | 대괄호 안에 있는 문자를 제외한 문자가 나타남 | [^A-Z]* | apple, abcd, qwerqwer |
| | |로 분리된 문자, 문자열, 하위 표현식 중 하나가 나타남. 파이프 기호임 | b(a|i|e)d | bad, bid, bed |
. | 문자 하나(글자, 숫자, 기호, 공백 등)가 나타남 | b.d | bad, bbd, bcd, b d |
^ | 바로 뒤에 있는 문자 혹은 하위 표현식이 문자열의 맨 앞에 나타남 | ^a | apple, asdf, a |
\ | 특수 문자를 원래 의미대로 쓰게 하는 이스케이프 문자 특수문자를 출력하려면 이스케이프를 앞에 써줘야함 |
\., \|, \\ | ., |, \ |
$ | 바로 앞에 있는 문자 또는 하위 표현식이 문자열의 마지막이라는 뜻 이 기호가 없는 정규 표현식은 .* 가 마지막에 있는 것과 마찬가지기 때문에 그 뒤에 어떤 문자가 오든지 전부 일치함. ^의 반대라고 생각하자 |
[A-Z]*[a-z]*& | ABCabc, zzzyss, Bo |
?! | '포함하지 않는다.'라는 뜻 이 기호의 바로 다음에 오는 문자나 하위 표현식은 해당 위치에 나타나지 않는다. 하지만 다른 위치에는 나타날 수 있기 때문에 완전히 배제하기 위해서는 ^를 앞에, $를 맨 뒤에 써주자 |
^((?![A-Z]).)*$ | aabbb-errr-ttt, asdfasdf |
\b | 문자 사이의 공백(한글 사용 불가) | \babc\b | aaa abc ddd |
\B | 문자 사이의 공백이 아닌 공백 | \Babc\B | aabca aabbbcc |
\d | 숫자 | \d.*\d | a123123123aaabbb |
\D | 숫자를 제외한 모든 숫자 | \D.*\D | 12312312aaaaaa231123 |
\s | 공백문자 | \s.*\s | a123a abbb |
\S | 공백을 제외한 모든 문자 | \S.*\S | 123123 |
\t | 탭 문자 | ||
\v | vertical tab 문자 | ||
\w | 영대소문자, 숫자, '_' | \w*\w | a123a abbb |
\W | 영대소문자, 숫자, '_'를 제외한 나머지 | \W*\W | a123a abbb |
\A | 문자열의 시작 | \A | |
\z | 문자열의 끝 | \z |
이메일 주소를 식별하는 정규표현식
먼저 규칙을 생각하자.
1. 이메일 주소의 처음에는 영어 대소문자, 숫자, 마침표, 더하기, 언더바만 올 수 있다.
[A-Za-z0-9\._+]} |
2. @ 다음에는 도메인 부분이니 영어 대소문자가 와야함2. 중간에는 @가 와야함
@ |
3. 도메인 부분 다음에는 .이 무조건 온다.
[A-Za-z]+ |
4. . 다음에는 com, net, org, edu 중 하나로 끝난다. 예외의 경우에는 따로 추가해줘야 한다.
(com|org|edu|net) |
5. 합쳐보자.
[A-Za-z0-9\._+]+@[A-Za-z]+\.(com|org|edu|net) |
regex101이라는 곳에 가면 여러가지 정규 표현식의 테스트가 가능하다.
regex101: build, test, and debug regex
728x90
반응형
'프로그래밍' 카테고리의 다른 글
[rust] cargo SSL connect error 해결 (0) | 2024.04.30 |
---|
댓글