Latest web development tutorials

파이썬 정규 표현식

정규 표현식은 쉽게 문자열이 패턴과 일치 여부를 확인하는 데 도움이 될 수 있습니다, 특수 문자 시퀀스입니다.

파이썬은 펄 스타일을 제공합니다 버전 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_]'에 해당합니다.