파이썬 정규 표현식
정규 표현식은 쉽게 문자열이 패턴과 일치 여부를 확인하는 데 도움이 될 수 있습니다, 특수 문자 시퀀스입니다.
파이썬은 펄 스타일을 제공합니다 버전 1.5, 정규 표현식 패턴 때문에 모듈 증가를 다시.
모듈 수 파이썬 언어 재 정규 표현식의 모든 기능을 가지고 있습니다.
패턴 문자열과 선택적 매개 변수 플래그에서 정규 표현식 객체를 생성하는 기능을 컴파일합니다. 이 개체는 정규 표현식 매칭 및 대체 방법의 집합이 있습니다.
모듈 재 또한 그들의 첫 번째 인수로 패턴 문자열을 사용 이러한 기능의 기능에 부합하는 방법을 제공한다.
이 섹션에서는 일반적인 파이썬 정규 표현식 처리 기능을 소개합니다.
re.match 기능
re.match하지 시작 위치 정합이 성공한 경우, 문자열의 시작 위치에서 패턴을 일치 시키려고 경기 () None을 반환한다.
함수 구문 :
re.match(pattern, string, flags=0)
함수 매개 변수 :
매개 변수 | 기술 |
---|---|
무늬 | 정규 표현식을 일치 |
현 | 문자열이 일치합니다. |
플래그 | 플래그, 정규 표현식 매칭과 같은 제어하는 데 사용됩니다 : 소문자 구분, 멀티 라인 등등 일치 여부. |
성공적인 일치 re.match 방법은 일치하는 객체, 그렇지 않으면 없음을 반환합니다.
우리는 일치하는 오브젝트가 식을 일치 얻을 수있는 그룹 (NUM) 또는 그룹 () 함수를 사용할 수 있습니다.
객체 메소드를 매칭 | 기술 |
---|---|
그룹 (NUM = 0) | 전체 표현식 문자열 일치, 그룹 ()는 튜플의 해당 그룹에 해당하는 값을 반환하는 경우에는 둘 이상의 그룹 번호를 입력 할 수 있습니다. |
그룹 () | 이 그룹에 포함 된 번호로 1, 문자열의 모든 그룹의 튜플을 반환합니다. |
실시 예 1 :
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3big.com')) # 不在起始位置匹配
위의 예제 출력은 실행
(0, 3) None
실시 예 2 :
#!/usr/bin/python import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2) else: print "No match!!"
다음으로 상기 실시 예의 결과는 :
matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter
에 re.search 방법
에 re.search 전체 문자열을 검색하고 최초의 성공적인 일치를 반환합니다.
함수 구문 :
re.search(pattern, string, flags=0)
함수 매개 변수 :
매개 변수 | 기술 |
---|---|
무늬 | 정규 표현식을 일치 |
현 | 문자열이 일치합니다. |
플래그 | 플래그, 정규 표현식 매칭과 같은 제어하는 데 사용됩니다 : 소문자 구분, 멀티 라인 등등 일치 여부. |
성공적인 일치에 re.search 방법은 일치하는 객체, 그렇지 않으면 없음을 반환합니다.
우리는 일치하는 오브젝트가 식을 일치 얻을 수있는 그룹 (NUM) 또는 그룹 () 함수를 사용할 수 있습니다.
객체 메소드를 매칭 | 기술 |
---|---|
그룹 (NUM = 0) | 전체 표현식 문자열 일치, 그룹 ()는 튜플의 해당 그룹에 해당하는 값을 반환하는 경우에는 둘 이상의 그룹 번호를 입력 할 수 있습니다. |
그룹 () | 이 그룹에 포함 된 번호로 1, 문자열의 모든 그룹의 튜플을 반환합니다. |
실시 예 1 :
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.search('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.search('com', 'www.w3big.com').span()) # 不在起始位置匹配
위의 예제 출력은 실행
(0, 3) (11, 14)
실시 예 2 :
#!/usr/bin/python import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print "searchObj.group() : ", searchObj.group() print "searchObj.group(1) : ", searchObj.group(1) print "searchObj.group(2) : ", searchObj.group(2) else: print "Nothing found!!"다음으로 상기 실시 예의 결과는 :
searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter
차분 re.match과에 re.search
그것은 일치하는 항목을 찾을 때까지, 전체 문자열과 일치에 re.search, 문자열의 시작은 정규 표현식을 충족하지 않는 경우 re.match 함수가 없음을 반환, 경기 실패, 문자열의 시작과 일치합니다.
예 :
#!/usr/bin/python import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print "match --> matchObj.group() : ", matchObj.group() else: print "No match!!" matchObj = re.search( r'dogs', line, re.M|re.I) if matchObj: print "search --> matchObj.group() : ", matchObj.group() else: print "No match!!"다음, 상기 결과의 예 :
No match!! search --> matchObj.group() : dogs
검색 및 교체
파이썬의 re 모듈은 교체 문자열 일치의 re.sub 제공합니다.
구문 :
re.sub(pattern, repl, string, max=0)
반환되는 캐릭터 라인은 왼쪽 RE 일치와 문자열을 대체하기 위해 반복되지 않을 것이다. 패턴이 발견되지 않으면, 문자 그대로 리턴한다.
선택 파라미터 수가 번 패턴 매칭 교체의 최대 수이다 수는 음이 아닌 정수이어야한다. 디폴트 값은 모든 항목을 대체 0 수단이다.
예 :
#!/usr/bin/python import re phone = "2004-959-559 # This is Phone Number" # Delete Python-style comments num = re.sub(r'#.*$', "", phone) print "Phone Num : ", num # Remove anything other than digits num = re.sub(r'\D', "", phone) print "Phone Num : ", num다음으로 상기 실시 예의 결과는 :
Phone Num : 2004-959-559 Phone Num : 2004959559
정규식 수정 - 옵션 플래그
정규 표현식은 매치 모드를 제어하는 옵션 플래그 수정을 포함 할 수 있습니다. 수정이 옵션 플래그로 지정됩니다. (|) 비트 OR을 통해 할 수있는 여러 플래그를 지정합니다. re.I으로 | re.M는 I 및 M 플래그로 설정됩니다
수정 | 기술 |
---|---|
re.I | 그래서 매칭은 대소 문자를 구분하지 않습니다 |
re.L | 현지화 식별 할 (로케일 인식) 일치 |
re.M | 멀티 - 라인 매칭 영향 ^와 $ |
re.S | 겠어요 -, 포함 뉴 라인은 모든 문자와 일치 |
re.U | 유니 코드 문자 집합의 문자를 해결하는 방법. 이 플래그는 \의 W, \ B를, \ B., w \에 영향을 |
re.X | 당신이 이해하기 정규 표현식을 쉽게 쓸 수 있도록 더 많은 유연성 형식을 제공함으로써이 플래그. |
정규 표현식 패턴
정규 표현식을 나타 내기 위해 특수 구문을 사용하여 패턴 문자열 :
문자와 숫자 자체. 문자와 숫자의 정규 표현식 패턴은 같은 문자열을 일치합니다.
앞에 백 슬래시 때 문자와 숫자의 대부분은 다른 의미를 가질 것이다.
경기 자체가, 또는 그들이 특별한 의미를 나타낼 때 문장 부호는 탈출한다.
백 슬래시 자체는 백 슬래시 이스케이프를 사용합니다.
정규 표현식은 보통 백 슬래시가 포함되어 있기 때문에, 그래서 당신은 그들을 더 잘 표현하기 위해 원래의 문자열을 사용하십시오. ( '// t'에 해당 이러한 연구 '/ t'등) 스키마 요소는 해당 특수 문자와 일치합니다.
다음 표는 정규식 패턴 구문 특정 요소를 나열합니다. 사용자의 사용 패턴이 선택적 플래그 인수을 제공하면, 패턴의 어느 요소의 의미를 변경한다.
모드 | 기술 |
---|---|
^ | 문자열의 시작 부분 일치 |
$ | 문자열의 끝과 일치합니다. |
. | 개행 문자를 제외한 모든 문자, re.DOTALL 플래그가 지정된 경우, 당신은 줄 바꿈을 포함한 모든 문자를 일치시킬 수 있습니다 일치합니다. |
[...] | [AMK] 경기 '는', 'm'또는 'K': 그것은 개별적으로 나열 문자의 그룹을 나타 내기 위해 사용 |
[^ ...] | 없음 [] 문자 : [^ ABC]는 A, B, C 문자 이외에 일치합니다. |
다시 * | 0 또는 표현의 일치보다. |
+ 재 | 하나 이상의 매칭 표현식 더. |
다시? | 세그먼트를 정의하는 상기 정규 표현으로 대전 0 또는 1 비 탐욕 방법 |
다시 {N} | |
{N} 다시 | n은 위의 표현의 일치. |
다시 {N, m} | 세그먼트를 정의하는 전술 정규 표현식에 의해 m 시간에 경기 N, 욕심 방법 |
A | B | 성냥 또는 b |
(재) | 괄호 내의 G 일치 식도기를 나타낸다 |
(? IMX) | 정규 표현식은 세 개의 선택적 플래그로 구성 I, m, 또는 X. 그것은 괄호 안에 만 지역에 영향을 미친다. |
(? -imx) | 정규 표현식 I, m, 또는 X 옵션 플래그 닫기를. 그것은 괄호 안에 만 지역에 영향을 미친다. |
(: 재) | (...)와 유사하지만기를 나타내지 않는 |
(IMX :? 재) | 나는 괄호, m, 또는 X 옵션 플래그 사용 |
(-imx :? 재) | 괄호 안에, m을 나는를 사용하거나 옵션 플래그를 X하지 마십시오 |
(? # ...) | 있습니다. |
(? = 재) | 확실히 구분 기호를 전달합니다. 포함 된 정규 표현식은 여기로 ... 표현하는 경우, 성공적으로 현재 위치에서 일치하고, 그렇지 않으면 실패합니다. 포함 된 표현이 시도 된 후에 그러나, 매칭 엔진은 진행되지 않고, 패턴의 나머지 부분도 바로 분리하려고한다. |
(?! 재) | 앞으로 부정 분리. 확실히 대조적 분리, 성공적인 포함 된 표현은 캐릭터의 현재 위치와 일치하지 않을 때 |
(?> 재) | 독립 패턴 매칭, 역 추적을 제거. |
\ W | 경기 숫자 및 밑줄 |
\ W | 비 영숫자와 밑줄을 일치 |
\ S | [\ t \ 없음 \ r에 \ f를]에 해당 공백 문자를 찾습니다. |
\ S | 비 공백 문자와 일치 |
\ D | [0-9]에 해당 숫자와 일치합니다. |
\ D | 비 숫자 일치 |
\ | 문자열의 시작을 일치 |
\ Z | 이 줄 바꿈이있는 경우 일치 문자열의 끝, 바로 문자열의 끝 전에 줄 바꿈하였습니다. C |
\ Z | 경기 문자열 끝 |
\ G | 경기 경기는 마지막 위치를 완료했다. |
\ B | 워드 경계, 즉, 단어들 사이의 위치에 공백을 지칭 일치한다. 예를 들어, '어 \ B는'을 '어'의 '어', 그러나 일치하지 않을 수 있습니다 "동사"의 "절대"를 일치 할 수 없습니다. |
\ B | 비 단어 경계와 일치합니다. '어의 \ B가'에서 "동사"를 일치 수있는 '어', 그러나 일치하지 않을 수 있습니다 "결코"는 '어'입니다. |
\ N \의 t 등을들 수있다. | 개행 문자와 일치합니다. 탭 문자를 찾습니다. 잠깐만 요 |
\ 1 ... \ (9) | 패킷 n 번째 서브 표현식을 일치. |
\ (10) | 그것은 경기 후 인 경우 처음 n 패킷 표현식을 일치시킵니다. 그렇지 않으면, 표현은 8 진수 문자 코드를 의미한다. |
정규 표현식의 예
문자 일치
예 | 기술 |
---|---|
파이썬 | "파이썬"을 매칭. |
문자 클래스
예 | 기술 |
---|---|
[PP] ython | "파이썬"또는 "파이썬"을 매칭 |
맛사지 [너희] | 경기 "루비"또는 "루브" |
[AEIOU] | 일치하는 괄호 안의 문자 중 하나 |
[0-9] | 임의의 숫자와 일치합니다. 마찬가지로 [0123456789] |
[아즈] | 모든 소문자와 일치 |
[AZ] | 모든 대문자와 일치 |
[A-ZA-Z0-9] | 어떤 문자와 숫자 일치 |
[^ AEIOU] | 문자 이외의 모든 문자에 추가 AEIOU |
[^ 0-9] | 수치를 제외하고 문자와 일치 |
특수 문자 클래스
예 | 기술 |
---|---|
. | "\ n"을 제외한 모든 단일 문자와 일치합니다. '\ n을'을 포함의 사용처럼, 모든 문자를 포함하여 일치 시키려면 '[. \ n]'모드. |
\ D | 숫자 문자를 찾습니다. 등가 [0-9]로 제한해야한다. |
\ D | 숫자가 아닌 문자와 일치합니다. 그것은 [^ 0-9]와 동일합니다. |
\ S | 공백, 탭, 페이지 나누기 등을 포함한 모든 공백 문자를 일치합니다. 동일합니다 [\ F \ 없음 \ 연구 \ t \ V]입니다. |
\ S | 비 공백 문자와 일치합니다. 동일합니다 [^ \ F \ 없음 \ 연구 \ t \ V]입니다. |
\ W | 밑줄을 포함한 모든 단어 문자와 일치합니다. 그것은 '[A-만 Za-z0-9_]'에 해당합니다. |
\ W | 비 단어 문자를 찾습니다. 그것은 '[^ A-만 Za-z0-9_]'에 해당합니다. |