>  기사  >  백엔드 개발  >  Python 표준 라이브러리의 re 모듈 학습에 대한 자세한 소개

Python 표준 라이브러리의 re 모듈 학습에 대한 자세한 소개

高洛峰
高洛峰원래의
2017-03-21 09:15:061987검색

re 모듈은 주어진 문자열이 주어진 패턴( match과 일치하는지 여부를 빠르게 확인할 수 있는 일련의 강력한 정규 표현식(정규 표현식) 도구를 제공합니다. function) 또는 이 패턴을 포함시키거나(검색 기능). 정규식은 간결하고 신비한 구문으로 작성된 문자열 패턴입니다.

1.공통방법

의 일치 및 검색 방법을 사용할 수 있습니다. escape(를 문자와 숫자를 제외한 문자열의 모든 문자에 백슬래시 추가
공통방법 설명
일치 (pattern, string, flags=0) 문자열 문자열의 시작 부분이 정규식 패턴과 일치하면 해당 MatchObject 인스턴스를 반환하고, 그렇지 않으면 반환합니다. 없음
search(pattern, string, flags=0) 문자열 검색, 정규식 패턴과 일치하는 위치가 있으면 MatchObject 인스턴스 반환, 그렇지 않으면 ReturnNone
sub(pattern, repl, string, count=0, flags=0) 은 문자열의 패턴 부분과 일치합니다. , repl로 대체, 최대 횟수 횟수
subn(pattern, repl, string, count=0, flags=0) 은 sub와 유사하며 다음에서 반환됩니다. subn은 대체된 문자열이며 일치하는 시간의 배열입니다. 튜플로
split(pattern, string, maxsplit=0, flags=0) pattern과 일치하는 문자열을 사용하여 문자열을 분할합니다
findall(pattern, string, flags=0) string에서 패턴과 일치하는 문자열을 목록 형식으로 반환
compile( 패턴 , flags=0)compile(pattern, flags=0) 정규 표현식 패턴을 일반 객체 로 컴파일하여 일반 객체
purge() 정규식 캐시
사용했습니다( string )

2. 특수 일치 문자

[]은 |과 결합된 을 나타내는 데 사용됩니다. 또는 다음을 의미합니다. 왼쪽과 오른쪽 중 하나와 일치하는 항목

3. 모듈 메소드

re.match(pattern, string, flags=0)

  문자열의 처음부터 일치하며, 패턴이 일치하면 Match 객체 인스턴스를 반환합니다(Match 나중에 설명하는 객체), 그렇지 않으면 None이 반환됩니다. 플래그는 정규식의 일치 방법을 제어하는 ​​데 사용되는 일치 모드(아래 설명)입니다.

import re

a = &#39;abcdefg&#39;print re.match(r&#39;abc&#39;, a)  # 匹配成功print re.match(r&#39;abc&#39;, a).group()print re.match(r&#39;cde&#39;, a)  # 匹配失败>>><_sre.SRE_Match object at 0x0000000001D94578>
>>>abc
>>>None

search(pattern, string, flags=0)

성공적으로 일치할 수 있는 문자열에서 하위 문자열을 찾는 데 사용됩니다. 발견되면 Match 객체 인스턴스가 반환되고, 그렇지 않으면 None이 반환됩니다. .

import re

a = &#39;abcdefg&#39;print re.search(r&#39;bc&#39;, a)print re.search(r&#39;bc&#39;, a).group()print re.search(r&#39;123&#39;, a)

>>><_sre.SRE_Match object at 0x0000000001D94578>
>>>bc
>>>None

sub(pattern, repl, string, count=0, flags=0)

바꾸기, 패턴과 일치하는 문자열 부분을 최대 횟수만큼 repl로 바꿉니다(나머지 일치 항목은 처리됨), 대체된 문자열이 반환됩니다.

import re

a = &#39;a1b2c3&#39;print re.sub(r&#39;\d+&#39;, &#39;0&#39;, a)  # 将数字替换成&#39;0&#39;print re.sub(r&#39;\s+&#39;, &#39;0&#39;, a)  # 将空白字符替换成&#39;0&#39;>>>a0b0c0
>>>a1b2c3

subn(pattern, repl, string, count=0, flags=0)

새 문자열이 포함된 튜플을 반환한다는 점을 제외하면 sub() 함수와 동일합니다. 및 일치 수

import re

a = &#39;a1b2c3&#39;print re.subn(r&#39;\d+&#39;, &#39;0&#39;, a)  # 将数字替换成&#39;0&#39;>>>(&#39;a0b0c0&#39;, 3)

split(pattern, string, maxsplit=0, flags=0)

분할()의 일반 버전, 패턴이 일치하는 경우 하위 문자열 일치 패턴으로 문자열을 분할합니다. 괄호가 사용되면 패턴과 일치하는 문자열도 반환 값 목록의 일부로 사용되며 maxsplit은 최대로 분할할 수 있는 문자열입니다.

import re

a = &#39;a1b1c&#39;print re.split(r&#39;\d&#39;, a)print re.split(r&#39;(\d)&#39;, a)

>>>[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
>>>[&#39;a&#39;, &#39;1&#39;, &#39;b&#39;, &#39;1&#39;, &#39;c&#39;]

findall(pattern, string, flags=0)

string의 패턴과 일치하는 겹치지 않는 하위 문자열을 목록 형식으로 반환합니다.

import re

a = &#39;a1b2c3d4&#39;print re.findall(&#39;\d&#39;, a)

>>>[&#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;]

4. 일치 개체

re.match()와 re.search()가 성공적으로 일치하면 일치 항목에 대한 많은 정보가 포함된 Match 개체를 반환합니다. 일치 제공 속성이나 메서드를 사용하여 이 정보를 얻을 수 있습니다. 예:

>>>import re

>>>str = &#39;he has 2 books and 1 pen&#39;
>>>ob = re.search(&#39;(\d+)&#39;, str)

>>>print ob.string  # 匹配时使用的文本
he has 2 books and 1 pen

>>>print ob.re # 匹配时使用的Pattern对象
re.compile(r&#39;(\d+)&#39;)

>>>print ob.group()  # 获得一个或多个分组截获的字符串
2

>>>print ob.groups()  # 以元组形式返回全部分组截获的字符串
(&#39;2&#39;,)

5. 패턴 객체

패턴 객체 객체는 re.compile()에 의해 반환됩니다. re 모듈에는 동일한 이름의 메서드가 많이 있습니다. 유사한 기능. 예:

>>>import re
>>>pa = re.compile(&#39;(d\+)&#39;)

>>>print pa.split(&#39;he has 2 books and 1 pen&#39;)
[&#39;he has &#39;, &#39;2&#39;, &#39; books and &#39;, &#39;1&#39;, &#39; pen&#39;]

>>>print pa.findall(&#39;he has 2 books and 1 pen&#39;)
[&#39;2&#39;, &#39;1&#39;]

>>>print pa.sub(&#39;much&#39;, &#39;he has 2 books and 1 pen&#39;)
he has much books and much pen

6. 일치 패턴

일치 패턴 값은 비트 OR 연산자 '|'를 사용하여 동시에 적용됨을 나타낼 수 있습니다. re.I | re.M과 같은 몇 가지 일반적인 플래그는 다음과 같습니다.

  • re.I(re.IGNORECASE): 대소문자 무시

>>>pa = re.compile(&#39;abc&#39;, re.I)
>>>pa.findall(&#39;AbCdEfG&#39;)
>>>[&#39;AbC&#39;]
  • re.L(re.LOCALE ) : 문자셋 현지화

이 기능은 영어로 이스케이프 문자 w 등 다국어 문자셋 사용 환경을 지원하기 위한 기능으로, [a-zA-Z0-9]을 의미하며, 모두 영문자와 숫자로 이루어져 있습니다. 프랑스어 환경에서 사용하는 경우 일부 프랑스어 문자열이 일치하지 않습니다. 이 L 옵션을 추가하면 일치시킬 수 있습니다. 그러나 이는 중국어 환경에서는 거의 쓸모가 없는 것으로 보이며 여전히 한자와 일치하지 않습니다.

  • re.M(re.MULTILINE): 여러 줄 모드, '^' 및 '$' 동작 변경

>>>pa = re.compile(&#39;^\d+&#39;)
>>>pa.findall(&#39;123 456\n789 012\n345 678&#39;)
>>>[&#39;123&#39;]

>>>pa_m = re.compile(&#39;^\d+&#39;, re.M)
>>>pa_m.findall(&#39;123 456\n789 012\n345 678&#39;)
>>>[&#39;123&#39;, &#39;789&#39;, &#39;345&#39;]
  • re.S(re.DOTALL): '.'의 동작을 변경하려면 일치 모드를 클릭하세요.

  .号将匹配所有的字符。缺省情况下.匹配除换行符\n外的所有字符,使用这一选项以后,点号就能匹配包括换行符的任何字符。

  • re.U(re.UNICODE): 根据Unicode字符集解析字符

  • re.X(re.VERBOSE): 详细模式

# 这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。以下两个正则表达式是等价的a = re.compile(r"""\d +  # the integral part
                   \.    # the decimal point
                   \d *  # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")# 但是在这个模式下,如果你想匹配一个空格,你必须用&#39;/ &#39;的形式(&#39;/&#39;后面跟一个空格)


구문 설명
. 은 개행 문자를 제외한 모든 문자와 일치합니다.
^ 헤더는
$ 꼬리 일치
* 이전 문자와 0번 이상 일치
+ 일치 이전 문자가 1번 이상
? 이전 문자가 0번 이상
{m,n} 이전 문자 m에서 n번까지 일치
특수 문자
문자 집합

위 내용은 Python 표준 라이브러리의 re 모듈 학습에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.