본문 바로가기
프로그래밍

주로 쓰이는 정규표현식

by laoching 2022. 2. 5.
728x90
반응형

regex101: build, test, and debug regex

기호 의미 예제 일치하는 문자열 예제
* 바로 앞에 있는 문자, 하위 표현식, 대괄호로 묶인 문자들이 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

댓글