python3- 공통 모듈 다시,

정규 표현식

정의 :

정규 표현식은 문자 (A)의 구성 논리적 수식을 문자열 조작, 특정 문자의 조합에 의해 미리 정의 된, 이러한 특정 문자, " 규칙 문자열 ", " 규칙 문자열은 " 문자열을 표현하는 데 사용됩니다 필터링 로직.

 그것은 독립적 인 규칙입니다 , 언어의 독립. 문자열 만 취급.

우리는 무엇을 할 수 있습니까?

1 : 숫자를 찾아 모든 휴대폰에서 파일을 넣어;

    # 열기 파일을 엽니 다

    # 읽기 파일 STR

    # 의 긴 목록에서 모든 문자열 찾기 (11) 자리를

# A는 문자로 문자를 읽어

2 : 파충류, 당신은 문자열 웹 페이지에서 원하는 데이터를 얻을 수 있습니다

실시 예 3 : 특정 콘텐츠의 로그를 추출

규칙

문자 그룹 :

[] 괄호 내용의 글 , 에 규칙에 맞춰 그들이 문자 다음과 같은 특정 위치에 표시됩니다

[0-9]   경기 번호                  

[AZ]는   소문자 일치             

[AZ]는   대문자와 일치             

[4-9]   와 일치 . 4 . 9 개 수치                        

[A-ZA-Z] 일치 대문자         

[A-ZA-Z0-9]는 소문자와 일치 + 숫자

[A-ZA-Z0-9_] 매치 라인의 숫자 감소

 

탈출 + 메타 문자를

\ 승   일치 라인 숫자 감소 단어 키워드를 [A-ZA-Z0-9_]

\ D   모든 숫자 일치      숫자 [0-9]

\들   공백 캐리지 리턴 일치 / 라인 피드 탭 공간의    공간 [\ n의 \의 t]를

\ W \ D \ S \ D \ S w \ 부정

\ B는 단어의 경계를 나타냅니다

[\ S \ S] \ D \ D]는 [\ w \ W] 세 코퍼스 의미 모든 문자와 일치

그리고 문자는 이스케이프와 관련된 메타 문자

\ w \ D \ S (\ n의 \의 t) \ B 형 \의 W \ D \ S

 

 

메타 문자

^ 문자열의 시작을 일치

$는 문자열의 끝을 일치

. 일치를 나타냅니다 줄 바꿈을 제외한 제외한 모든 문자를

[]   만큼 브래킷 콘텐츠에 나타나는 일치 될 수있다

[^] 만큼 브래킷에는 콘텐츠가 이제 매칭되지 않을 수 있으므로

A | B   또는 준수 규칙 또는 B 규칙이 일치 될 수 있습니다

  # 경우 규칙이있다 규칙의 일부 , 그리고 이상의 규칙 B 가혹한에 규칙 / 길이 , 넣어 규칙 사설을

  # 더 복잡한 \ 상단에 기록 된 이상 규칙

() 시간 제약 수량 어의 요구를 표현하기 위해 함께 여러 문자를 그룹화 , 같은 그룹에이 한정사를 제공

 

정량

{N}는 한정 기호 문자가 앞에 나타납니다 나타내는 n 개의

{N}는 이전의 정량 문자는 적어도 나타납니다 나타내는 N

{N, m}을 나타내는 이전 문자의 정량 표시 나노

? 문자가 표시되기 전에 한정사를 나타냅니다 0 번 또는 1 없어도되는 표현 번

+ 문자가 한정사 전에 나타나는 나타냅니다 1 회 이상

* 수량 지시가 표시되기 전에 문자를 나타냅니다 0 번 이상

 

운동 :

 

일치 정수  \ D +

경기 진수 \ D + \. \ D +

소수점 또는 정수 일치  \ D + \ \ D + |을 . \ D + \ D + (\ \ D +.)?

 

 

 

ID 번호 (유효성 검사 규칙의 옆 고려) 일치 :

[1-9] \ d 개 {14} (\의 D {2} \ d 배속])?

 

 

 

[1-9] \ d 개 {16} \ d 배속] | [1-9] \ d 개 {14}

 

 

 

 

탐욕 일치

허용의 범위에서 가장 긴 결과를 복용

비 욕심 패턴 / 비활성 경기 : 후면 정량 플러스에서 ?

 . *? X는    그것이 어떤 길이 만날 때까지 비 개행 문자와 일치 X의 중지

문자 + 정량 제약 연속 된 문자의 수

문자 + 한정 기호 +?   연속 문자의 제약 최소한의

문자 + 한정 기호 +? + X 연속 한정사의 범위 내에서 문자의 제약 최소 번호 , 만난 x는 즉시 정지

 

이러한 정규 표현식 자신의 규칙 및있는 파이썬 머리카락 관계

다시 모듈

findall은 : 요소를 그 각각의 모든 목록을 일치

 

 

 

검색 : 오직 우측 제 1 좌측 일치 , 직접적인 결과는 얻어지지 않고 , 그러나 변수 , 이 변수를 통해 그룹 에있어서의 결과를 얻을

 

이 경우에는 일치하는 , 그것은 반환하지 않습니다 없음을 사용하여 그룹을 불평 할 것이다

 

 

 절차는 일반적으로 다음과 같이 사용된다 :

 

경기 : 스크래치 경기 , 에 해당 검색 정규 표현식은 추가 ^

 

 

확장 문자열 처리 : 절단 교체

스플릿

 

 

 

 

 하위   된 새로운 대체 번호

 

 

 

 

 

 subn는 튜플을 반환 , 두번째 엘리먼트는 교체의 개수

 

 

 

 

컴파일 모듈은 시간을 절약

직접 정규 표현식에 여러 사용하는 과정에서, 바이트 코드로 컴파일, 배수가 아닌 컴파일

 

 

 

 

 finditer 문제를 해결하기 위해 정규식을 사용하여 공간을 절약 / 메모리

 

 

 

패킷

그룹 ()가 전체 매칭의 함량을 나타내고, 그룹 (NUM)는 첫 번째 일치하는 대표 NUM 패킷

오기 다시
S = "행복 매일 <A> </a>에"
RES = re.search ( '(<\ W +>) ([\ W \ W이다] +) (</ \ W +>)' , S)
전단 (res.group ())   # 모든 결과
인쇄 (res.group. (1))   # 1의 패킷 번호의 수가 나타내는
인쇄 (res.group (2))
프린트 (res.group이. (3))

 

수출

 

findall은 우선 순위

= re.findall RET ( '는 WWW (바이두 |.시나) .COM의' , 'www.sina.com' )
인쇄 (RET)   findall은 그룹 일치의 내용을 반환하는 우선 순위를 부여하기 때문이다 [ '시나의'] # 개, 당신이 결과와 일치 할 경우에 허가를 취소 RET = re.findall ( '는 WWW를 (? :. 바이두 |시나) .COM의' , 'www.sina.com' ) 인쇄 (RET)   # [ 'www.sina.com ']


 

추천

출처www.cnblogs.com/tester-star/p/11608706.html