>  기사  >  백엔드 개발  >  Python 정규 표현식에서 re 모듈을 사용하는 방법은 무엇입니까? re 모듈 사용법 소개

Python 정규 표현식에서 re 모듈을 사용하는 방법은 무엇입니까? re 모듈 사용법 소개

不言
不言원래의
2018-09-15 14:15:443016검색

이 글의 내용은 Python 정규식에서 re 모듈을 사용하는 방법에 관한 것입니다. re 모듈의 사용법에 대한 소개에는 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

정규식은 문자열을 처리하는 데 가장 일반적으로 사용되는 방법입니다. 정규식은 코딩의 모든 곳에서 볼 수 있습니다.

정규 표현식은 대부분 동일합니다.

1. 문자열을 바꿀 때 대체된 문자열은 함수가 될 수 있습니다.

2.split 함수는 분할 횟수를 지정할 수 있습니다.

3. 이전 항목에서 정의한 표현식은 고정 길이여야 합니다

다음은 re 모듈을 사용하는 방법에 대한 자세한 설명입니다. 실제로 언급된 세 가지 차이점에 주목하세요. 위

1. Match

지침:

re.match는 문자열의 시작 위치에서 패턴 일치를 시도합니다. 시작 위치에서 일치에 실패하면 match()는 None을 반환합니다.

구문: ​​

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

flags는 선택적 플래그이며 여러 플래그는 비트 또는 (|)로 지정할 수 있습니다. 예를 들어, re.I | re.M은 I 및 M 플래그로 설정됩니다.

make 일치는 대소문자를 구분하지 않습니다. 로캘 인식 일치를 수행합니다. 다중 라인 매칭, ^ 및 $make에 영향을 미칩니다. 모든 문자와 일치합니다 유니코드 문자에 따라 문자를 구문 분석합니다. 세트. 이 플래그는 w, W, b, B에 영향을 줍니다.

일치에 성공하면 re.match 메서드는 일치하는 개체를 반환합니다. group(num) 또는 groups() 일치 개체 함수를 사용하여 일치하는 표현식을 얻을 수 있습니다. group() 또는 group(0)은 전체 정규식의 일치 결과를 반환합니다.

예:

s= 'abc123abc'
print(re.match(&#39;[a-z]+&#39;, s))           # <_sre.SRE_Match object; span=(0, 3), match=&#39;abc&#39;>
print(re.match(&#39;[a-z]+&#39;, s).group(0))      # abc
print(re.match(&#39;[\d]+&#39;, s))            # None
print(re.match(&#39;[A-Z]+&#39;, s, re.I).group(0))   # abc
print(re.match(&#39;[a-z]+&#39;, s).span())       # (0, 3)

2, search

설명:

re.search는 전체 문자열을 스캔하고 첫 번째로 성공한 일치 항목을 반환합니다.

구문: ​​

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

일치에 성공하면 re.search 메서드는 일치하는 개체를 반환하고, 그렇지 않으면 None을 반환합니다. 일치 표현식은 group(num) 또는 groups() 일치 개체 함수를 사용하여 얻을 수 있습니다.

예:

s = &#39;abc123abc&#39;
print(re.search(&#39;[a-z]+&#39;, s).group())  # abc
print(re.search(&#39;[a-z]+&#39;, s).span())   # (0, 3)
print(re.search(&#39;[\d]+&#39;, s).group())   # 123
print(re.search(&#39;[\d]+&#39;, s).span())    # (3, 6)
print(re.search(&#39;xyz&#39;, s))         # None

groupdict

groupdict는 이름이 일치하는 모든 하위 그룹의 사전을 반환합니다.

print(re.search(&#39;[a-z]+&#39;, s).groupdict())          # {}
print(re.search(&#39;(?P<letter>[a-z]+)(?P<num>\d+)&#39;, s).groupdict())  # {&#39;num&#39;: &#39;123&#39;, &#39;letter&#39;: &#39;abc&#39;}

3, sub 및 subn

설명:

re.sub는 문자열에서 일치하는 항목을 바꾸는 데 사용됩니다.

re.subn은 대체된 문자열과 대체 횟수를 포함하는 튜플을 반환합니다.

구문: ​​

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

repl: 대체할 문자열은 함수일 수도 있습니다.

count: 패턴 일치 후 최대 대체 수입니다. 기본값은 0이며, 이는 모든 일치 항목을 대체함을 의미합니다.

예:

s = &#39;abc123abc&#39;
print(re.sub(&#39;[\d]+&#39;, &#39;数字&#39;, s))       # abc数字abc
print(re.sub(&#39;[a-z]+&#39;, &#39;字母&#39;, s, 1))   # 字母123abc
# 将匹配的数字乘以 2
def double(matched):
    value = int(matched.group(&#39;value&#39;))
    return str(value * 2)
# repl是一个函数
print(re.sub(&#39;(?P<value>\d+)&#39;, double, s))  # abc246abc
print(re.subn(&#39;[\d]+&#39;, &#39;数字&#39;, s))        # (&#39;abc数字abc&#39;, 1)
print(re.subn(&#39;[a-z]+&#39;, &#39;字母&#39;, s,))      # (&#39;字母123字母&#39;, 2)
print(re.subn(&#39;[a-z]+&#39;, &#39;字母&#39;, s, 1))     # (&#39;字母123字母&#39;, 1)

4, compile

지침:

re.compile은 정규식을 컴파일하고 match()에 대한 정규식(패턴) 개체를 생성하는 데 사용되며 search() 함수가 사용됩니다.

구문: ​​

compile(pattern, flags=0)

예:

s = &#39;abc123abc&#39;
p = re.compile(&#39;[\d]+&#39;)
print(p.match(s, 4, 5).group(0))    # 2 从位置4开始匹配到位置5
print(p.search(s).group(0))         # 123

5, findall

설명:

re.findall은 문자열에서 정규 표현식과 일치하는 모든 하위 문자열을 찾고 목록을 반환하거나, 일치하는 항목이 없으면 빈 목록을 반환합니다.

구문: ​​

findall(pattern, string, flags=0)

예:

s = &#39;abc123abc&#39;
print(re.findall(&#39;[a-z]+&#39;, s))  # [&#39;abc&#39;, &#39;abc&#39;]
print(re.findall(&#39;[h-n]+&#39;, s))  # []

6, finditer

설명:

finditer는 문자열 일치에서 정규식을 찾는 findall과 유사합니다. 모든 하위 문자열을 반복자로 반환합니다.

구문: ​​

finditer(pattern, string, flags=0)

예:

s = &#39;abc123def&#39;
it = re.finditer(&#39;[a-z]+&#39;, s)
for match in it:    print(match.group())

7, Split

지침:

re.split 메소드는 일치하는 하위 문자열에 따라 문자열을 분할한 다음 반환합니다. 목록에.

구문: ​​

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

maxsplit: 분리 횟수, maxsplit=1은 한 번 분리하며 기본값은 0이며 횟수에는 제한이 없습니다.

예:

print(re.split(&#39;a&#39;, &#39;1A1a2A3&#39;, re.I))           # [&#39;1A1&#39;, &#39;2A3&#39;]# 输出结果并未能区分大小写,这是因为re.split(pattern,string,maxsplit, flags)默认是四个参数,当我们传入的三个参数的时候,系统会默认re.I是第三个参数,所以就没起作用。# 如果想让这里的re.I起作用,写成flags=re.I即可。
print(re.split(&#39;a&#39;, &#39;1A1a2A3&#39;, flags=re.I))     # [&#39;1&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;]

8, escape

설명:

re.escape는 문자열의 특수 문자열을 이스케이프합니다.

문법:

escape(pattern)

예:

print(re.escape(&#39;www.dxy.cn&#39;))  # www\.dxy\.cn

9, Regular

"(?P8a11bc632ea32a57b3e3693c7987c420...)": 그룹화하고 8a11bc632ea32a57b3e3693c7987c420 이름을 지정합니다.

"(?P=name)": 별칭이 8a11bc632ea32a57b3e3693c7987c420인 그룹과 일치하는 문자열을 나타냅니다.

10. 특수 선행사(부정) 정의

정규식에서 일반적으로 사용되는 선행사 정의(?<=exp) 및 선행사 부정 정의(?

(?<=aaa)   # 正确
(?<=aaa|bbb) # 正确
(?<=aaa|bb) # 错误
(?<=\d+)   # 错误
(?<=\d{3})  # 正确

와 같이 고정 길이여야 하기 때문입니다. 관련 권장 사항:

파이썬에서 로깅 모듈의 용도는 무엇입니까? 로깅 모듈 사용법 소개

파이썬 모듈의 정규 표현식에 대한 자세한 소개

re.L

re.M

re.S

re.U

re.

위 내용은 Python 정규 표현식에서 re 모듈을 사용하는 방법은 무엇입니까? re 모듈 사용법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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