파이썬 정규 표현식의 기초 14-

1. 정규 표현식

보통은 다른 도구를 대체 할 수 있지만, 다른 도구는 정기적으로 대체 할 수 없습니다.

1. 도구 문자열 일치 또는 추출, 모든 언어에 대한 도구를 기반으로.

정규 표현식은 문제에 직면하고있다

문자열이 주어진 형식의 사용자 등록 등의 계좌 만족 포맷 여부 판단과 일치하는지 여부를 결정한다.

지정된 형식 문자열에서 정보를 추출합니다. 페이지에서 링크를 크롤링.

사용자가 제출 한 심판 사서함 형식은 올바른 :

문자 나 숫자 또는 .COM 더 @ 하나 개 이상의 문자 또는 숫자, R '^ [A-ZA-Z0-9] + @ [A-ZA-Z0-9] + \. com $'

# 리더 패킷을 다시 가져 오기

re.findall의 RES = 용 (R & LT '^ [A-ZA-Z0-9] @ + [A-ZA-Z0-9] + \. com $', ' [email protected] ') #가 일치하도록 변환 될 수있다 목록 항목.

참고 : 괄호 안의 정규 표현식을 사용하는 경우, 결과는 오히려 전체 경기보다 findall은 기능이 괄호에 일치합니다.

그래서 우리는 필요한 데이터 부분의 추출을 완료하려면이 메커니즘을 사용할 수 있습니다.

함수 : re.findall (패턴, 문자열) #

= re.findall (r'aaa 'mystr) # 첫번째 파라미터는 정규식 mymail는 제 2 인수는 컨텐츠를 발견하는 문자열이다.

2. 메타 문자

자체 문자의 특별한 의미가 있습니다 :

^ 탈자 부호

일부 메타 :? * + [] () \ ^ $

\함으로써 자신에 맞게 이러한 문자를 탈출.

일반 규칙이 공간을 마련하기 위해 노력하지 않는 작성하려면

\ 탈출, 정규 표현식 규칙을 탈출

R 파이썬 문자열을 탈출, 두 층을 탈출해야합니다.

()에 의해 findall은의 동작을 변경하려면

점은 문자가 있어야합니다, 강제 점령, 어떤 한 단어를 나타냅니다.

앵커 메타 문자

줄의 잠금 시작 ^ 첫 번째 행에 위치

라인의 잠금 끝 $의 행의 끝에 위치

단어 경계 (하지 메타 문자) : \ B를

A = '안녕하세요 세계 내가 abcd와 있어요 오늘은 helloworld를 말'

= re.findall의 MyMail (R & LT '는 \ bhello B는 \', A) # 단지 헬로 일치 헬로 때문에 나중에 단어이다.

3. 반복 메타 문자

중괄호 {}를 주파수 제어 선행 문자를 수정한다.

A = 'abbbbbbbbc'

mymail = re.findall (r'ab {8} C ')는, {8} 상기 8 (B)가, {2,8}는 2-8 사이의 일치를 나타내고있다 나타낸다. {2, 2}를 나타내는 배면 무한대는. 이전이 {}에 여유 공간이 일치합니다 null 문자 (사실, 다른 문자의 위치이다)을 포함하여, 여덟 즉 0-8을 표시 쓰지 마십시오.

[0-9] 내지 9 숫자 0을 나타낸다

또한 * + 3 배 특별 대표가 있습니까?

mymail = re.findall (R ', STR)

* 무한대에 0을 나타냅니다, 수정 된 규칙 이전 문자 {0}

무한대 주제 N + 1. {1}

? 아니 더는 경기보다 더 많은 경우,보다 대신에. {0,1}

N {N} 일

M ~ N의 일 : {M, N}

적어도 M {M}

4. 욕심 아닌 욕심

몇 글자가 일치로, 비 욕심 모드가 될 물음표를 추가합니다.

비 탐욕 : 나중에 메타 문자를 추가, 당신이 아닌 욕심 모드가되고 다른 규칙 뒤에 물음표를 추가 할 수 있습니다 ..

임의의 수 : *?

하나 이상의 : +?

아니면 번호 : ??

+ + 탐욕 규칙 메타 문자

mystr = 'abbbb'

mymail = re.findall (r'ab의 *? 'mystr)

5. | 선택 메타 문자

A는 = '행복 오늘은 행복 하하하'

mymail = re.findall (r'happy | 하하 | 오늘, A)

 

6. 버스트 []

[abc],整个中括号相当于一个字符,查找其中的一个,一个一个位置分开匹配.两个中括号相当于2个字符.

[0-9]{3},用大括号来控制次数.表示3个数字.

[A-Za-z0-9]表示大小写加数字,可表示邮箱或者首字母的命名规范.

不可以随意加逗号,只有在大括号{}表示区间的时候加逗号.

7.反向字符类 [^]

如果脱字符^写在字符组外面,代表锁定行首

如果写在字符组里面,代表反向字符类,(即 除括号内字符之外)

字符组[...] 反向字符类:...

有一对(),代表只会提取括号里面的内容.括号外面的当作一个标记

转义\,取消某些特殊字符的含义,让其变成普通字符.

mymail = re.findall(r'href = "(.*?)"',mystr),括号代表只提取括号里面的内容,外面的只是标记.

还有re.match,代表从开头开始匹配.

re.search ,代表任意位置只匹配一个,找不到就返回NONE,只匹配第一个

re.sub 替换, re.sub(r'href', 'haha', mystr),比字符串的replace好用.原本的字符串替换成新的字符串.

8.预定义字符组问题引入

\d \D 任意数字\非数字字符组

\s \S任一空白,非空白字符

\w \W 任一字母数字\非字母数字字符

记法:上下左右除去a.

추천

출처www.cnblogs.com/winfun/p/10983880.html