import re <-정규표현식을 지원하는 모듈
문자 클래스
[ ] 사이의 문자들과 매치
하이폰응ㄹ 사용하여 표혀 가능
ex
[a - c ] = [abc][0 - 5] = [012345]
Dot
줄바꿈(\n)을 제외한 모든 문자와 매치
ex) a.b = aab 일치, a0b 일치, aba는 불일치
반복
a*b = ab사이에 0번을 포함한 반복 매칭
a+b= ab사이에 반복 매칭이나 0번은 매치되지않음
a{2}b = ab사이에 2개 반복되는게있음 매치
a{2,5}b = ab사이에 a가 2이상 5이하면 반복되면 매치
a?b = 0번 혹은 1번 이면 매치
m = p.match("python") # 불일치가 하나라도 있으면 안나옴
m = p.search("3 python") # 일치하는게 하나라도 있음 나옴
m = p.findall("python need") #일치하는걸 찾아서 리스트로 나옴
4.매치 객체
import re
p = re.compile("[a-z]+")
m = p.match("python")print(m.group()) #매치된 문자열
print(m.start()) #첫 스타트 인덱스
print(m.end()) #마지막 인덱스
print(m.span()) #시작과 끝을 튜플로 리턴
결과
python
0
6
(0, 6)
5.컴파일객체
p = re.compile("a.b", re.S) # .문자가 줄바꿈도 포함하도록
p = re.compile("[a-z]", re.I) # 대소문자 무시
p = re.compile("^pythion\s\w+",re.M) #^를 각 라인의 맨처음으로 인식
p = re.complie(r"""
&[#]
( 0[0-7]+
~~~어쩌고
""", re.re.VERBOSE) #한줄이 아닌 공백이 있어도 컴파일
r'\\seiont' => r적고 뒤에 ''내용 적으면 백슬러시 2개로 나옴 즉, 그대로 인식
6.메타문자
| or
^ 맨처음
$ 맨끝
\b 공백
\w 단어
7.그룹핑
p = re.compile((ABC)+)
그룹핑된 문자열에 이름 넣기 p = re.compile(r"(?P<name>\w+)\s+~~~ m = p.search("paris in the spring") print(m.gorup("name"))
8.전방탐색
긍정형 (?=)
검색조건에는 포함되나 결과에는 안나오고 싶을때p = re.compile(".+(?=:)") m = p.search("http://google.com") print(m.group())
부정형 (?!)
.bat확장자 안나오게끔 p = re.compile(".*[.](?!bat$).*$, re.M)
9.문자열 바꾸기
import re p = re.compile("(blue|white|red)") m = p.sub("colour", "blue socks and red shoes") print(m) 결과값 : colour socks and colour shoes
10.Greedy Non-Greedy
s = "<http><head><tile>" print(re.match("<.*>", s).group()) #전체 반복만 print(re.match("<.*?>", s).group()) #최소한의 반복만 결과값 <http><head><tile> <http>