flag : 파이썬의 옵션compile을 통해서 패턴과 flag 등록할 수 있다
| compile 종류 | 단축 | 설명 |
|---|---|---|
re.compile('패턴', re.DOTALL) | re.comdile('패턴', re.S) | 모든문자 (줄바꿈포함)매칭한다 |
re.compile('패턴', re.IGNODRECASE) | re.comdile('패턴', re.I) | 대소문자 구분 안함 |
re.compile('패턴', re.MULTILINE) | re.comdile('패턴', re.M) | 모든 라인에서 매칭한다 |
re.compile('패턴', re.VERBOSE) | re.comdile('패턴', re.X) | 주석 등의 편의기능 사용가능하다 |
re.compile('패턴', re.ASCII) | re.comdile('패턴', re.A) | ASCII코드만을 사용한다 |
flag 옵션 사용방법2번의 경우를 더 많이 사용한다
gglobal로 모든 문자열에서 찾겠다
global 옵션을 지워주면 맨 처음에 나오는 문자열에서만 찾는다
case insensitivecase insensitive 옵션 체크하면 대소문자 구분없음
예시: Hello, hello모두 찾음
sitcky일회용, 최초로 발견되는 문자열만 찾는다
(Anchors)/^hello/gm문장 앞에 나오는 hello만 찾겠다
/hello$/gm문장 끝에 나오는 hello만 찾겠다
(찾기)모든 문자열은 점으로 표현됨
/./gm모든 문자열(* 이랑 같은 역할)
/....../gm모든 6개의 문자열 매칭한다
6자리 문자열을 매칭한다
띄어쓰기도 문자열로 인식된다
그래서
점 자체를 찾고 싶다면 역슬래시\를 이용해서 찾는다
/h[ea]llo/gmhello , hallo 모두 매칭됨
/h.llo/gmhello, hallo, hollo던 모두 매칭이 되는데
이때 /h[.]llo/gm 이라고 입력하면 점이 적용되지 않는다
[.]은 문자 그대로의 점을 매칭
[-]대괄호는 주로 범위를 나타낼 때 많이 사용된다
예: /h[a-f]llo/gm
/[a-z]/gm알파벳 소문자 매칭
/[A-Z]/gm알파벳 대문자 매칭
/[0-9]/gm숫자 매칭
/[a-zA-Z0-9]/gm모든 알파벳, 숫자
/[^a-zA-Z0-9]/gm나머지 문자열 (공백, 특수문자)
[] 안에서 사용된 꺽쇠 ^ : [^]not의 의미
/h[^ae]llo/gm
hello, hallo 말고 h.llo hollo 선택됨
[] 밖에서 사용된 ^ : ^[]처음이라는 의미
(그룹으로 묶기)/(on|ues|rida)/gmon, ues, rida 3개 중 하나를 만족해도 매칭하게 된다
/(on|ues)|(rida)/gm일단 결과값은 동일하지만 (사이트에서) 마우스를 오버했을 때의 설명은 다르다
| 매칭된 문자열 | 그룹1 | 그룹2 |
|---|---|---|
| Monday | on | undefined |
| Tuesday | ues | undefined |
| Friday | undifined | rida |
/.(a|e|o)ll./gm패턴의 앞뒤로도 텍스트를 붙일 수 있다
hello Hello yello kello !ello 가 매칭된다
. : 모든 문자열 가능
(a|e|o) : 3개의 문자 중에 하나면 매칭된다
ll : 일반 문자열 "ll"이 일치해야 한다
. : 아무 문자 하나 매칭 (특수문자 가능)
/.(a|e)ll.() () ()/gm여러 개의 그룹으로 나눠서 설정할 수도 있다
/(?abc)/gm`/(?:on|ues)|(rida)/gm `
on|ues 둘 중하나와 일치해도 매칭되긴 하지만 그룹으로 설정되지는 않는다
하지만 rida 는 그룹으로 설정된다
/(?=abc)/gmabc가 들어간 것을 매칭한다
/hello (?=world)/gm
뒤에 "world"가 들어간 "hello" 만 매칭시킨다
"world"를 매칭시키는 것이 아니다
hello world hello world hello 매칭된다
Hello world hello World 는 매칭되지 않는다
abc가 아닌 것을 매칭한다 (not의 의미)
/hello (?!world)/gm
뒤에 "world"가 들어가지 않는 hello만 매칭시킨다
hello World 매칭된다
world가 아니라 world 이기 때문에 → hello world(띄어쓰기 두개) 매칭된다
해당 문자가 몇 개 있는지 명시하여 패턴을 찾는다
* + ? {} 사용한다
*앞에 있는 문자가 한개도 없어도 될때 사용
+앞에 있는 문자가 한개 이상 있어야 할때 사용
?앞에 있는 문자가 없거나 있거나
{}개수 지정가능
{3.} : {3,and}에서 and가 생략된거라 생각하자
_* &_{0,}앞에 있는 문자_ 가 0개 ~ N개 0개이상
_+ & _{1,}앞에 있는 문자_ 가 1개 ~ N개 1개이상
_? &_{0,1}앞에 있는 문자_ 가 0개 ~ 1개 있거나 없거나
/.{5}/gm
공백까지 글자수로 인식되기 때문에 특정하지 못한다
/h{4}/gm
h 다음에 모든 문자가 4개만 이어지는 문자열만 특정된다 (매칭된다)
/[0-9][0-9][0-9][-.* ][0-9][0-9][0-9][0-9][-.* ][0-9][0-9][0-9][0-9]/gm
결과
010-1234-1234
010 1234 1234
010*1234*1234
숫자 사이에 셋 중 하나라도 매칭된다
/[0-9]{3}[-.* ][0-9]{4}[-.* ][0-9]{4}/gm
이때 [0-9]가 반복되므로 {} 를 활용해서 간단하게 입력할 수도 있다
이렇게 정규표현식을 입력해줄 수 있다
/[0-9]{2,3}[-.* ][0-9]{3,4}[-.* ][0-9]{4}/gm
지역번호 02, 031 모두 찾을 수 있고
가운데번호가 332, 3345 모두 찾을 수 있다
/[0-9a-zA-Z]+@[0-9a-zA-Z].[a-zA-Z]/gm
[0-9a-zA-Z]+ : 1개이상의 문자
맨 앞에 아무 글자도 없을 수는 없으니까
*(0개이상)이 아니라 +(1개이상)로
@ : 무조건 포함되어야 하는 문자 @
[0-9a-zA-Z]+ : 1개이상의 문자
. : 문자 .
[a-zA-Z]+ : 뒤에는 숫자가 나오지 않으니 (1개이상의)문자만 검색
결과 : 아래 두개의 이메일은 매칭되지 않는다
paul-korea@naver.com(-때문에)
hojun.lee@gmail.com(.때문에)
워드
5개의 글자와 스페이스 하나
not 워드
숫자
not 숫자
스페이스
not 스페이스
1. /[0-9]{3}-[0-9]{4}-[0-9]{4}/gm
2. /[0-9]{3}[-.* ][0-9]{4}[-.* ][0-9]{4}/gm
3. /\d+[-* .]?\d+[-* .]?\d/gm
?: 앞의 문자가 나올수도 있고 안나올수도 있고
+: 앞의 문자가 하나 이상으로 나와야한다
1. /\d{3}-\d{4}-\d{4}/gm
2. /\d{3}\W\d{4}\W\d{4}/gm
백슬러시를 이용해서 특수문자 자체를 매칭하기
/abc\\abc/gm
abc/abc 가 매칭된다
^^ :) (hello world)
대괄호, 소괄호 안에 감싸져있는 값들은 데이터분석에서 string값을 주는 경우가 많다
일일히 replit이나 split을 주는 것보다 정규표현식으로 쓰는 것이 더 좋다
/\[\w*\]/gm\w : 워드(문자, 숫자)* 몇개의 글자수인지 특정하지 않음[123456], [456], [abc] 가 매칭된다
[de!f]는 매칭되지 못한다
/\[\ d*\]/gm\d : 숫자만 매칭된다 (문자는 매칭되지 않는다)
[123456], [123] 매칭된다
. : 모든문자(특수문자 포함)* 몇개의 글자수인지 특정하지 않음[123456], [456], [de!f] 매칭된다
/\(.*\)/gm : 소괄호 안에 잇는 문자 매칭하기(hello, world)
(name, leejojun), (age, 10), (height, 180), (email, paul-lab@naver.com) 매칭된다
/\\\\.*\/\//gm : 백슬래시 & 슬래시 매칭하기\\hello world// 매칭된다
\\ : 백슬래시 두개의 정규식이 실제 문자 \ 백슬래시 하나를 매칭하기 때문에
백슬래시 두개를 매칭하고 싶은 경우 정규식에는 \\\\ 백슬래시 4개를 입력해준다
/\^\^/gm : 꺽쇠문자특수문자 ^ : 문자열 매칭하거나 그룹의 not의 의미를 가지기 때문에
/^^/gm이라고 입력하면 ^^ 가 매칭되지 않는다
/\:\)/gm : 콜론 매칭하기:) 매칭하기
/-.*-/gm- 도 특수문자이긴 하지만 대괄호 안에서만 사용되기때문에 그냥 입력해줘도 된다/\-.*\-/gm 같이 역슬래시를 입력해줘도 문제는 없어서-0901-, -5043-, -721-가 매칭된다
/[ㄱ-ㅎ]/gm자음만 있는ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ 매칭된다
/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/gm모든 한글표현을 매칭한다
/[가-힣]/gm자음 혹은 모음만이 아니라 하나의 한글글자?를 매칭한다
가나다라마바사아자차카타파하,수사 수박 수상 동해 물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 매칭된다
/^[가-힣]+$/gm첫 문자부터 종료까지 한글만 있는 문자열을 매칭한다
가나다라마바사아자차카타파하
수사 수박 수상 매칭된다
(동해 물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세는 사이에 띄어쓰기로 구분되어있어서 매칭되지 않는 듯 하다)

/^[가-힣 ]+$/gm한글표현 다음에 띄어쓰기가 있는 문자열도 매칭한다
가나다라마바사아자차카타파하, 수사, 수박, 수상, 동해 , 물과 , 백두산이 , 마르고 , 닳도록 , 하느님이 , 보우하사 , 우리나라 , 만세 매칭된다
/^[가-힣\-_ ]+$/gm한글표현 다음에 -, _, 가 있는 문자열 매칭한다
`/^[가-힣-_ ]+$/gm`
- 는 범위를 나타내기 때문이다- 앞에 \를 입력해주면 된다안녕_하세요, 안녕-하세요 매칭된다