re 모듈은 Python 언어에 완전한 정규 표현식 기능을 제공합니다.
컴파일 함수는 패턴 문자열과 선택적 플래그 인수를 기반으로 정규식 개체를 생성합니다. 이 객체에는 정규식 일치 및 교체를 위한 일련의 메서드가 있습니다.
re.match(pattern, string, flags=0) # 匹配成功返回一个匹配的对象,否则返回none
1 import re2 print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配 (0, 3)3 print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配 None
1 import re 2 line = "cats are smarter than dogs" 3 matchObj = re.match(r'(.*) are (.*?) .*', line, re.M|re.I) 4 # matchObj = re.match(r'(.*) are (.*) .*', line, re.M|re.I) # 结果也一样 5 6 if matchObj: 7 print("matchObj.group()", matchObj.group()) # cats are smarter than dogs 8 print("matchObj.group(1)", matchObj.group(1)) # cats 9 print("matchObj.group(2)", matchObj.group(2)) # smarter10 else:11 print("No match!!")
1 import re 2 line = "cats are smarter than dogs" 3 matchObj = re.match(r'(.*) are (.*?) (.*) .*', line, re.M|re.I) 4 # matchObj = re.match(r'(.*) are (.*) (.*) .*', line, re.M|re.I) #这个结果也一样 5 6 if matchObj: 7 print("matchObj.group()", matchObj.group()) # cats are smarter than dogs 8 print("matchObj.group(1)", matchObj.group(1)) # cats 9 print("matchObj.group(2)", matchObj.group(2)) # smarter10 print("matchObj.group(3)", matchObj.group(3)) # than11 else:12 print("No match!!")
group(num) 또는 groups() 일치 개체 함수를 사용하여 일치 표현식을 가져옵니다.
groups(): 1부터 에 포함된 그룹 번호까지 모든 그룹 문자열을 포함하는 튜플을 반환합니다.
re.search는 전체 문자열을 검색하고 첫 번째로 성공한 일치 항목을 반환합니다.
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配 (0, 3)print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配 (11, 14)
1 import re2 line = "Cats are smarter than dogs";3 searchObj = re.search(r'(.*) are (.*?) .*', line, re.M | re.I)4 if searchObj:5 print("searchObj.group() : ", searchObj.group()) # Cats are smarter than dogs 6 print("searchObj.group(1) : ", searchObj.group(1)) # Cats7 print("searchObj.group(2) : ", searchObj.group(2)) # smarter8 else:9 print("Nothing found!!")
1 line = "Cats are smarter than dogs" 2 matchObj = re.match(r'dogs', line, re.M | re.I) 3 if matchObj: 4 print("match --> matchObj.group() : ", matchObj.group()) 5 else: 6 print("No match!!") 7 8 matchObj = re.search(r'dogs', line, re.M | re.I) 9 if matchObj:10 print("search --> matchObj.group() : ", matchObj.group())11 else:12 print("No match!!")13 '''14 No match!!15 search --> matchObj.group() : dogs16 '''
re.match는 문자열의 시작 부분만 일치합니다. 문자열의 시작 부분이 정규 표현식과 일치하지 않으면 일치가 실패하고 re.search는 일치 항목을 찾을 때까지 전체 문자열을 일치시킵니다.
1 re.search(pattern, string, flags=0)2 re.sub(pattern, repl, string, count=0, flags=0)
re 모듈은 문자열에서 일치하는 항목을 대체하기 위해 re.sub를 제공합니다.
매개변수:
pattern: 정규식의 패턴 문자열입니다.
repl: 대체할 문자열도 함수일 수 있습니다.
re.X
^ | 은 문자열의 시작과 일치합니다. |
$ | 은 문자열의 끝과 일치합니다. |
. | 은 개행 문자를 제외한 모든 문자와 일치합니다. re.DOTALL 플래그가 지정되면 개행 문자를 포함한 모든 문자와 일치할 수 있습니다. |
[...] | 은 별도로 나열된 문자 그룹을 나타내는 데 사용됩니다. [amk]는 'a', 'm' 또는 'k'와 일치합니다. |
[^...] | 존재하지 않음 []의 문자: [^abc]는 a, b, c를 제외한 문자와 일치합니다. |
re* | 은 0개 이상의 표현식과 일치합니다. |
re+ | 은 1개 이상의 표현식과 일치합니다. |
re? | 탐욕스럽지 않은 방식으로 이전 정규식에 의해 정의된 0 또는 1개의 조각과 일치 |
re{ n} | |
re{ n,} | n개의 이전 표현식과 정확히 일치 . |
re{ n, m} | 는 이전 정규식으로 정의된 조각의 n ~ m 배와 일치합니다. 욕심 많은 방식으로 |
a | b | 는 a 또는 b |
(re) | G는 괄호 안의 표현식과 일치하며 그룹 |
(?imx) | 을 나타냅니다. 정규식에는 i, m 또는 x의 세 가지 선택적 플래그가 포함되어 있습니다. 괄호 안의 영역에만 영향을 미칩니다. |
(?-imx) | i, m 또는 x 선택적 플래그를 끄는 정규식입니다. 괄호 안의 영역에만 영향을 미칩니다. |
(?: re) | (...)과 유사하지만 그룹을 나타내지는 않습니다. |
(?imx: re) | 괄호 안에 i, m 또는 x 선택적 플래그 사용 |
(?-imx: re) | 괄호 안에 i, m 또는 x 선택적 플래그를 사용하지 마세요. |
(?#...) | Comments. |
(?= re) | 앞으로 양수 구분 기호. ... 로 표시되는 포함된 정규식이 현재 위치와 성공적으로 일치하면 성공하고, 그렇지 않으면 실패합니다. 그러나 포함된 표현식을 시도한 후에는 일치 엔진이 전혀 개선되지 않으며 패턴의 나머지 부분은 여전히 구분 기호의 오른쪽을 시도해야 합니다. |
(?! re) | 앞으로 음수 구분 기호를 사용하세요. 양수 구분 기호와 달리 포함된 표현식이 문자열의 현재 위치에서 일치할 수 없으면 성공합니다. |
(?> re) | 독립적인 패턴이 일치하므로 역추적할 필요가 없습니다. |
w | 영숫자 및 밑줄과 일치 |
W | 영숫자가 아닌 문자 및 밑줄과 일치 |
s | [tnrf]에 해당하는 모든 공백 문자와 일치합니다. |
S | 일치 비어 있지 않은 문자 |
d | 는 [0-9]에 해당하는 모든 숫자와 일치합니다. |
D | 숫자가 아닌 모든 문자와 일치 |
A | 문자열의 시작과 일치 |
Z | 문자열의 끝과 일치합니다. 줄 바꿈이 있는 경우 줄 바꿈 이전의 문자열 끝만 일치합니다. c |
z | 는 문자열 |
G | 의 끝과 일치하며 마지막 일치가 완료된 위치와 일치합니다. |
b | 은 단어와 공백 사이의 위치를 나타내는 단어 경계와 일치합니다. 예를 들어, 'erb'는 "never"의 'er'와 일치하지만 "동사"의 "er"는 일치하지 않습니다. |
B | 은 단어가 아닌 경계와 일치합니다. 'erB'는 "동사"의 'er'와 일치하지만 "never"에서는 일치하지 않습니다. |
n, t 등 | 은 개행 문자와 일치합니다. 탭 문자와 일치합니다. n번째 그룹의 콘텐츠가 일치하도록 |
1...9 | 기다려 보세요. |
10 | 일치하면 n번째 그룹의 내용과 일치합니다. 그렇지 않으면 8진수 문자 코드의 표현을 참조합니다. |
예
1. 문자 일치
는 "python"과 일치합니다.
2. 문자 클래스
[Pp]ython | 은 "Python" 또는 "python"과 일치합니다 |
r ub [ye] | 는 "ruby" 또는 "rube"와 일치합니다 |
[aeiou] | 대괄호 안의 문자와 일치 |
[0-9] | 모든 숫자와 일치합니다. [0123456789] |
[a-z] | 모든 소문자와 일치 |
[A-Z] | 모든 대문자와 일치 |
[a-zA-Z0-9] | 모든 문자와 일치 & ; 숫자 |
[^aeiou] | aeiou 문자를 제외한 모든 문자 |
[^0-9] | 숫자를 제외한 문자와 일치 |
3. 특수 문자Class
. | "n"을 제외한 모든 단일 문자와 일치합니다. 'n'을 포함한 모든 문자를 일치시키려면 '[.n]'과 같은 패턴을 사용하십시오. |
d | 은 숫자와 일치합니다. [0-9]와 동일합니다. |
D | 은 숫자가 아닌 문자와 일치합니다. [^0-9]와 동일합니다. |
s | 은 공백, 탭, 양식 피드 등을 포함한 모든 공백 문자와 일치합니다. [fnrtv]와 동일합니다. |
S | 은 공백이 아닌 모든 문자와 일치합니다. [^ fnrtv]와 동일합니다. |
w | 은 밑줄을 포함한 모든 단어 문자와 일치합니다. '[A-Za-z0-9_]'와 동일합니다. |
W | 은 단어가 아닌 문자와 일치합니다. '[^A-Za-z0-9_]'와 동일합니다. |
r은 문자열이 이스케이프되지 않은 원시 문자열임을 나타냅니다. 이를 통해 컴파일러는 백슬래시, 즉 이스케이프 문자를 무시할 수 있습니다.
(.*)첫 번째 일치 그룹인 *는 개행 문자를 제외한 모든 문자와 일치함을 의미합니다.
(.*?) 두 번째 일치 그룹 *? 뒤에 여러 물음표가 있으면 비탐욕 모드, 즉 조건을 충족하는 최소 문자만 일치함을 나타냅니다.
마지막 .*는 일치하지 않습니다. 괄호로 둘러싸서 그룹화, 매칭이 되지 않습니다. 효과는 처음과 동일하지만 매칭 결과에는 포함되지 않습니다.
위 내용은 파이썬 정규식을 배우는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!