정규표현식(regular expression)
- 컴퓨터 소프트웨어 기술로 원하는 정보를 추출하는 것을 크롤링이라고 한다.
- 크롤링으로 여러가지 데이터를 가지고 와서 맘에드는 데이터만 뽑기 위해 작성하는 식이 정규표현식.
- 파이썬에서 re를 import 해서 사용할 수 있다.
기본 라이브러리로 별도 설치 없이 import만으로 사용 가능
? |
1번 이하 |
u? |
u가 0번 이거나 1번 나와야 함 |
* |
0번 이상 |
u* |
u가 0번이상 나옴 |
+ |
1번 이상 |
u+ |
u가 1번 이상 나옴 |
. |
문자 |
. |
1개의 문자와 일치 |
[ ] |
문자클래스 |
[1-9] [abc]d |
1-9까지 중 하나 |
[^ ] |
부정 |
[^a-z] |
알파벳 소문자로 시작하지 않는 모든 문자 |
정규표현식의 문법 설명
- 정규표현식은 정해진 규칙으로 사용하면서 익숙해 진다면 정보를 전처리 할 때 편히 사용할 수 있게 된다.
- 처음에는 이해가 안되고 어려운것이 당연한 문법이다.
- 위키백과에 가면 관련 설명을 볼 수 있다. 하지만 이해하기 쉽지 않을 수 있다.
- https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
ㅇ re.MULTILINE
- 행 별로 끊어 달라는 옵션 (파이썬 re의 옵션)
ㅇ ( )로 받아 오는 경우 튜플을 반환한다. 튜플은 변경 불가능
a='''{name:'홍길동',age:20}'''
info=re.findall("{name:'(.+)',age:(.+)}",a)
자주 쓰이는 패턴
1) 숫자만 : ^[0-9]*$
2) 영문자만 : ^[a-zA-Z]*$
3) 한글만 : ^[가-힣]*$
4) 영어 & 숫자만 : ^[a-zA-Z0-9]*$
5) E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
6) 휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
7) 일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$
8) 주민등록번호 : \d{6} \- [1-4]\d{6}
9) IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})
정규표현식 파이썬 : re
- import re를 사용
- .+?는 아무거나 와도 된다는 뜻
- (.+?)는 ( )안에 들어간 것을 가져오라는 것
- [ 예제 ]
import re
data = '''<member><name>홍길동</name><age>20</age></member><member><name>박자바</name><age>25</age></member>'''
list = re.findall('<member>(.+?)</member>',data)
print(list)
- 정규표현식 에서 .+와 .+?의 차이
- .+는 한 덩어리로 가져온다. :탐욕적 greedy
- .+?는 나눠서 가져온다. : 비탐욕적 non-greedy
- 정규표현식에서 여러줄의 데이터를 가져 오는 경우
- re.DOTALL 이라는 옵션을 써줘야 한다.
- info2 = re.findall('<member>(.+)</member>',data2,re.DOTALL)
- 정규표현식 옵션
- 대소문자를 구별하지 않는 매칭
- re.IGNORECASE
반응형
'Python > Python Crawling' 카테고리의 다른 글
파이썬 크롤링, BeautifulSoup으로 정보 가져오기 (0) | 2019.05.09 |
---|---|
파이썬 크롤링, re로 특정 정보 선택하기(간단한 정규표현식) (1) | 2019.05.09 |
파이썬 크롤링, requests로 네이버 웹 정보 가져오기 (0) | 2019.05.09 |
파이썬 크롤링 기본, requests와 re & BeautifulSoup 개념 및 설치 (0) | 2019.05.09 |
파이썬 크롤링, 웹사이트 정보 가져오기 (0) | 2019.05.09 |
댓글