Python에는 re정규식 작업에 사용할 수있는 이라는 내장 패키지가 있다
import re
이렇게 가져다가 쓰면되는데
re안에 문자열을 검색 할 수 있는 함수세트가 있다.
findall, search, match , split, sub
findall : 일치하는 모든 것을 리스트 형태로 반환한다.
search : 주어진 문자열중 일치하는지 확인한다.
match : 주어진 문자열이 처음부터 일치하는지 확인한다.
split : 일치 할 때마다 문자열이 분할 된 목록을 반환한다.
sub : 하나 이상의 일치 항목을 문자열로 바꾼다.
메타문자
[] : 문자클래스 , 아무거나 집어넣기 가능
ex) [1-9] 1~9까지를 의미함
. : 하나의 문자를 의미
ex) ab.d -> abcd, abdd, abed, abod
^ : 문자열 시작
ex) ^ab -> abc, abcd, abcde
$ : 문자열 끝
ex) yz$ -> abyz, abcyz, cdyz
* : 0회 이상 문자열에 나타나는 것
ex) ab* -> abc , ab, acc, aee (b가 0회 이상 나타나야함, 없어두 됨)
+ : 1회이상 문자열에 나타나는 것
ex) ab+ -> abb, abbb, abbbe, abbbbbbbe ( b가 1회 이상 나타나야함)
match 함수
import re
p = re.compile("ab.d")
m = p.match("abcd")
print(m.group())
이 코드를 한번 보면
메타문자 .을 이용하고, match를 이용해 처음부터 일치하는지 확인하고 group을 이용해 일치하는 문자열 부분을 반환했다.
컴파일 결과 abcd가 잘 출력된걸 볼 수 있다.
import re
txt = "you need to sleep"
p = re.compile("ee")
m = p.search(txt)
print(m)
search를 이용하면
어디에 문자열이 매치했는지 알려준다.
만약 찾고 싶은문자열이 없다면
import re
txt = "you need to sleep"
p = re.compile("i")
m = p.search(txt)
print(m)
이렇게 None으로 표기되는걸 볼 수 있다.
findall 함수를 이용하면
import re
txt = "you need to sleep"
p = re.compile("o")
m = p.findall(txt)
print(m)
일치하는 모든것을 리스트 형태로 반환하는 것을 알 수 있다.
split 함수
import re
txt = "you need to sleep"
m = re.split("\s", txt)
print(m)
여기서 \s 는 문자열에 공백 문자가 포함 된 일치 항목을 반환하는 일종의 특수 시퀀스다.
sub 함수
import re
txt = "you need to sleep"
m = re.sub("\s", "!", txt)
print(m)
스페이스가 ! 로 대체되어 표시된걸 볼 수 있다.
추가로
import re
p = re.compile("ab.d")
m = p.match("abcde")
print("string : ", m.string)
print("start : ", m.start())
print("end : ", m.end())
print("span : ",m.span())
string : 일치하는 문자열 반환
start : 일치하는 문자열 시작 인덱스 반환
end : 문자열 끝나는 인덱스 반환
span : 일치하는 문자열 시작 / 끝 인덱스 반환
적절하게 사용하여 원하는 문자를 뽑아낼 수 있는 능력을 기르자.
'Python' 카테고리의 다른 글
파이썬을 이용하여 네이버 실시간 급상승검색어 가져오기 (0) | 2021.01.27 |
---|---|
파이썬으로 웹 크롤링하기 (Selenium 이용) (0) | 2021.01.27 |
파이썬으로 웹 크롤링하기 (BeautifulSoup 사용) (0) | 2021.01.27 |
Blind SQL Injection code form (0) | 2021.01.26 |
enumerate와 list comprehension (0) | 2021.01.12 |