티스토리 뷰
전방탐색은 (?=위치패턴)으로 사용한다.
후방탐색은 (?<=위치패턴)으로 사용한다.
아래 코드는 정규표현식 후방탐색을 이용해 text 변수의 값 중 "30"을 가져오는 패턴이다. 문자열은 예시를 든 것으로 30과 40이라는 숫자가 있을 때, "30"의 값만 가져오고 싶었다. 결과는 정상적으로 30이 찍힌다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import re text = '<head> zlzlzlzlzlzlzl 30 </head> 40' // text 변수에서 '30'을 가져오는 패턴 pattern = '(?<=\<\w{4}\>\s\D{14}\s)\d{1,10}' d_c = re.compile(pattern, re.I) result = re.findall(d_c, text) print result =========================================== [결과창] >>> ['30'] | cs |
아래 코드는 위 코드에서 pattern 변수를 좀 다르게 변경해봤다.
최종적으로 30을 가져오는 패턴은 같지만, 패턴을 더욱 세밀하게 하기 위해 첫 번째로<head> 옆 부분의 공백이 없다는 것을 가정하여 "?(0개 또는 1개 이상)"를 붙여주었다. 두 번째로는 zlzlzlzlzlzlzl 문자의 개수가 20개까지 늘어날 것으로 예상하여 \D{1,20} 으로 변경하였다.
pattern에서 달라진 것은 "\s => \s?", "\D{14} => \D{1,14}" 부분이다.
하지만, 오류가 발생한다.. (?<=)를 제거하면 정상 동작을 한다. invalid expression... 오류 내용은 더 찾아봐야할 것 같다....
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import re text = '<head> zlzlzlzlzlzlzl 30 </head> 40' // text 변수에서 '30'을 가져오는 패턴 pattern = '(?<=\<\w{4}\>\s?\D{1,20}\s?)\d{1,10}' d_c = re.compile(pattern, re.I) result = re.findall(d_c, text) print result =========================================== [결과창] >>> Traceback (most recent call last): File "C:test.py", line 6, in <module> d_c = re.compile(pattern, re.I) File "C:\Python27\lib\re.py", line 190, in compile return _compile(pattern, flags) File "C:\Python27\lib\re.py", line 245, in _compile raise error, v # invalid expression error: look-behind requires fixed-width pattern | cs |
'프로그래밍 > Python' 카테고리의 다른 글
Pyinstaller 도구로 만들어진 파일(.exe) 디컴파일하기 (0) | 2018.07.26 |
---|---|
[binascii] unhexlify 함수로 헥스(Hex) 값과 문자열(Char)을 교체하기 (1) | 2018.01.17 |
[Django]UnicodeEncodeError 발생 시 해결방법 (0) | 2017.10.09 |
[Django_Template] forloop 사용법 (0) | 2017.09.03 |
[Python] collections.OrderedDict (0) | 2017.08.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Kimsuky
- 멋쟁이사자처럼 4기
- 악성코드
- Servey
- AMSI
- VirusBulletin
- CVE-2018-9375
- us-cert
- 해킹메일
- 출처 : Do it 안드로이드 프로그래밍
- Static Analysis Engine
- .wll
- vuln
- Yara
- koodous
- 한글악성코드
- malware
- 스피어피싱
- keylogger
- cuckoo-sandbox
- MS-Office
- Bisonal
- idapython
- Decoding
- 위협정보공유
- CVE-2018-0798
- 비트코인
- Flybits
- infostealer
- Cisco Talos
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함