정규식 사용하기 in Python regexp, http://www.regexr.com/ 사이트에서 미리 정규식을 테스트 해보는 실전 예제 : https://swlock.blogspot.com/2020/06/in-python.html
re
Python 파이썬에서 정규 표현식으로 문자열 추출할 수 있는 것은 re 모듈입니다.용도
문자열에서 일정한 패턴의 문자열을 찾기 위해서 사용합니다.많이 사용하기 때문에 많은 예제와 완벽하게 정리하였습니다.
re 모듈의 간단한 사용법
>>> import re >>> p = re.compile('a.b') >>> m = p.match('abb') >>> print(m) <re.Match object; span=(0, 3), match='abb'> >>>
특정 문자열 'abb' 에서 'a' 'b' 사이에 임의의 문자가 있는지 확인하는 함수 입니다.
정규표현식 사용하는 장소
re.compile('여기') 위치에 정규 표현식을 사용합니다.
정규표현식에 사용할 수 없는 특수 문자
. ^ $ * + ? { } [ ] \ | ( )1) [ ] : 문자 한개 의미
기본적으로 정규식에서 a는 [a] 와 동일함 abc는 [abc]가 아니고 [a][b][c]의미임예)
[AaB] : a : 일치, B : 일치, b : 일치하지 않음, AB : A도 일치 하고, B도 일치함
[0-9] : 0~9 내의 숫자를 의미함, 0 : 일치, A : 일치 하지 않음
2) . : 임의의 문자/숫자 1개를 의미(단,\n(개행 문자)를 제외한 모든 문자와 매치)
예)a.c 인 경우, abc : 일치, abb : 일치 하지 않음
3) * : 앞의 문자/숫자의 반복을 의미하며 한번도 반복이 안될 수 있음
예)a*b 인 경우, ab : 일치, aab : 일치, aaab : 일치 , abc : 불일치
[ab]*b 인 경우, ab : 일치, b 일치 ( [ab]*에 의해 문자가 없을 수도 있음)
4) + : 앞의 문자/숫자의 반복을 의미하며 최소 한번의 반복이 있어야 함
예)a+b 인 경우, ab : 불일치, aab : 일치, aaab : 일치 , abc : 불일치
[ab]+b 인 경우, ab : 일치, b 불일치 ( [ab]+에 의해 문자가 하나가 있어야 함)
5) {m,n} : 앞의 문자/숫자가 최소 m개 최대 n의 반복을 나타냄
예)a{2,3} : a : 불일치, aa : 일치, aaa : 일치, aaaa : 불일치
{1}은 +와 동일하며 {0}은 *와 동일함
6) ? : {0, 1} 의미하며, 앞의 문자/숫자가 없거나 한개인 경우이다.
예)a?b : a : 불일치, ab : 일치, b : 일치
7) ^ : NOT 을 의미한다. [ ] 내에서 사용한다.
예)[^0-9] : 0 : 불일치, A : 일치
8) ^ : 문자열 시작을 의미
예)^abc : abc 일치, babc 불일치 중간에 abc가 있지만 시작이 아니므로 일치 하지 않음, kkk abc : abc 단어가 있긴하지만 문자열의 처음이 아니므로 불일치
9) $ : 문자열의 마지막을 의미
예)abc$ : kkkabc 는 일치 (search()메소드로 해야 함), re.compile('abc$').search('kkkabc')
10) ( ) : 문자를 묶는다
위의 대부분의 문법이 앞의 문자 1글자를 의미했는데 ( )를 이용하면 여러개의 문자로 대치 된다.예)
(ab)* : a : 불일치, b : 불일치, ab : 일치, ababab : 일치
11) | : OR을 의미한다. a|b 는 [ab] 와 같은 표현이다.
ab|cd 는 [abcd]와 같은 표현은 아니다.ab|cd 는 ([a][b])|([c][d]) 와 같다고 볼 수 있다.
12) \ : 정규식 표현식에 사용이 안되는 문자들의 표시할때 사용한다
.은 \. 으로 표시한다\은 \\로 표시한다
자주 사용하는 문자열
\d - 숫자와 매치, [0-9]\D - 숫자가 아닌 것과 매치, [^0-9]
\s - whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
\S - whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]
\w - 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]
\W - 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_].
4가지 메소드
match() 문자열의 0번째 위치부터 정규식과 매치되는지 조사, group() 이용 매치 되는 문자열 획득함정규식이 a?c 인 경우 kabc 는 k가 있어서 일치하지 않음
아래 예제는 abc로 시작하는지 조사
>>> re.compile('^abc').match('abc') <re.Match object; span=(0, 3), match='abc'> >>> re.compile('^abc').match('abc').group() 'abc'
search() 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
정규식이 a?c 인 경우 kabc는 k를 건너뛰고 abc가 있어서 일치하는 부분 리턴
아래 예제는 마지막이 abc로 끝나는지 확인
>>> re.compile('abc$').search('kkkabc') <re.Match object; span=(3, 6), match='abc'> >>> re.compile('abc$').search('kkkabc').group() 'abc'
findall() 정규식과 매치되는 모든 문자열을 리스트로 리턴한다
>>> re.compile('a*c').findall('adbc adc ab ac adf adbdfajc') ['c', 'c', 'ac', 'c']
finditer() 정규식과 매치되는 모든 문자열을 iterator 객체로 리턴한다
>>> it = re.compile('a*c').findall('adbc adc ab ac adf adbdfajc') >>> for r in it : print(r) c c ac c
정규식 사용하기 in Python regexp, http://www.regexr.com/ 사이트에서 미리 정규식을 테스트 해보는 실전 예제 : https://swlock.blogspot.com/2020/06/in-python.html
댓글 없음:
댓글 쓰기