regular expression
^ $ * + ? { } \ | ( )
등의 특수 문자는[ ]
안에 작성한다.[0-9]
: 숫자[a-zA-Z]
: 알파벳 대소문자^
: 문자 클래스 내부에서 쓰일 때는, 이 이하로 작성된 것들의 반대를 의미한다.[a-z^aeiou]
: 알파벳 소문자 중 모음 제외[^AEIOUaeiou_\W\d]
: A,E,I,O,U, a,e,i,o,u, 밑줄, 문자가 아닌 것, 숫자를 전체 부정한다. (자음)^
만 해당되며,^
과 반대로, 특정 문자로 끝나면 매치되도록 한다.\n
(줄 바꿈)을 제외한 모든 문자와 매치한다.\
\
을 붙여줘야 한다.\
을 사용해야 할 일이 있다면\
를 나타낼 때, ‘\\’
을 입력해야 한다.‘\메타 문자’
가 전달될 수 있도록,’\\\메타 문자’
로 해야 한다.\d
, \s
, \w
는 상관 없으며, 그 외에 \b
등은 마찬가지로 해당된다.\d
: 숫자\s
: space나 tab 등, 공백을 의미하는 white space\w
: 문자, 숫자, 밑줄\b
: 단어의 경계를 의미한다. 즉, white space로 구분된 단어와 매치할 때 사용한다.\B
는 그 반대이다.)‘\\bis\\b’
이면 is와, ‘is\\B’
이면 isn’t의 is와 매치된다.*
등을 *?
등으로, greedy한 것들을 제한하고자 할 때 사용한다.<.*>
을 하면 전체 문자열로써 매치되고,<.*?>
을 하면 각각 <html>, <head>로 나누어 매치된다.{n}
: 정확히 n개{min,max}
: 최소, 최대.( )
를 사용한다.\1
(1번째 그룹) 따위로 재참조 할 수 있다.?P<group_name>
으로 지정할 수 있다.?P=group_name
으로 참조할 수 있다.?:
을 붙이도록 한다.( )
를 사용하지만, 그룹핑은 아니다.(?=~)
: 매치 여부로는 활용하지만, 추출(소비)하지는 않을 때 사용한다.‘http://www.google.com’
의 ‘http:’에서, ‘:’을 제외하고 ‘http’만 추출할 때 등에 유용하다.‘.+(?=:)’
등으로 할 수 있다.(?!~)
: 특별히 원하지 않는 문자열을 필터링 할 때 주로 사용한다.‘.*[.](?!bat$).*$’
: 확장자가 bat이 아닌 경우에만 매치된다.re.compile(패턴, option)
\n
을 포함하여 모든 문자와 매치하도록 한다.\n
에 상관없이 검색할 때 유용하다.^
, $
과 관련하여 쓰이곤 한다.패턴 객체.match(대상 문자열)
패턴 객체.search(대상 문자열)
패턴 객체.findall(대상 문자열)
패턴 객체.finditer(대상 문자열)
패턴 객체.sub(바꿀 문자열, 대상 문자열, n)
\g
<그룹 이름 혹은 인덱스>로 참조할 수 있다. p = re.compile('[^0-9a-z_.-]')
p.sub('', 대상 문자열)
re.sub(pattern, 바꿀 문자열, 대상 문자열)
로 축약하여 사용할 수도 있다.match 객체.group(그룹 명 혹은 인덱스)
findall()
과 같이, match 객체를 return 하지 않는 경우에는group()
을 사용할 수 없으나, 그룹핑된 부분만 추출한다.match 객체.start()
match 객체.end()
match 객체.span()