이 기사는 Python의 정규식에 대한 자세한 소개를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 될 수 있습니다.
Regular
re = 정규 표현식
re 모듈을 사용하면 Python 언어가 모든 정규 표현식 기능을 가질 수 있습니다.
compile 함수는 패턴 문자열과 선택적 플래그 인수를 기반으로 정규식 개체를 생성합니다. 이 객체에는 정규식 일치 및 교체를 위한 일련의 메서드가 있습니다.
기능: 문자열을 처리할 때 문자열의 내용이 작성한 정규식과 일치하는지 확인합니다.
일치하면 일치하는 내용을 제거하고,쓰기 정규식 규칙
정규식과 일치하는 패턴
일치할 문자열
세 가지 검색 방법
1). findall
import re str = 'hello sheen,hello cute.' pattern_1 = r'hello' pattern_2 = r'sheen' print(re.findall(pattern_1,str)) #['hello', 'hello'] print(re.findall(pattern_2,str)) #['sheen']
2).match
match는 문자열의 시작 위치부터 일치를 시도하고,
시작 위치가 성공적으로 일치하지 않으면 , None을 반환합니다.
시작 위치가 성공적으로 일치하면 개체를 반환합니다.
import re str = 'hello sheen,hello cute.' pattern_1 = r'hello' pattern_2 = r'sheen' print(re.match(pattern_1,str)) #<_sre.sre_match> print(re.match(pattern_1,str).group()) #返回match匹配的字符串内容,hello print(re.match(pattern_2,str)) #None</_sre.sre_match>
3).search
search는 전체 문자열을 스캔하고 성공적으로 일치하는 첫 번째 콘텐츠만 반환합니다.
찾을 수 있으면 반환합니다. 객체를 생성하고 그룹 메소드를 통해 해당 문자열을 얻습니다.
import re str = 'hello sheen,hello cute.' pattern_1 = r'hello' pattern_2 = r'sheen' print(re.search(pattern_1,str)) #<_sre.sre_match> print(re.search(pattern_1,str).group()) #hello print(re.search(pattern_2,str)) #<_sre.sre_match> print(re.search(pattern_2,str).group()) #sheen</_sre.sre_match></_sre.sre_match>
특수 문자 클래스
.: n을 제외한 모든 문자와 일치합니다. [.n]
d: 숫자--(숫자), 숫자와 일치합니다. , [0-9]
D와 동일: 숫자가 아닌 문자와 일치, [^0-9]
s와 동일: 공백(일반화된 공백: 공백, t, n, r), 단일 공백 문자와 일치
S: 단일 공백 문자를 제외한 모든 공백 문자와 일치합니다.
w: 영숫자 또는 밑줄, [a-zA-Z0-9_]
W: 영숫자 또는 밑줄 제외, [^a-zA-Z0 -9_]
import re # . print(re.findall(r'.','sheen\nstar\n')) #['s', 'h', 'e', 'e', 'n', 's', 't', 'a', 'r'] #\d#\D print(re.findall(r'\d','当前声望30')) #['3', '0'] print(re.findall(r'\D','当前声望30')) #['当', '前', '声', '望'] #\s#\S print(re.findall(r'\s', '\n当前\r声望\t为30')) #['\n', '\r', '\t'] print(re.findall(r'\S', '\n当前\r声望\t为30')) #['当', '前', '声', '望', '为', '3', '0'] #\w#\W print(re.findall(r'\w','lucky超可爱!!')) #['l', 'u', 'c', 'k', 'y', '超', '可', '爱'] print(re.findall(r'\W','lucky超可爱!!')) #['!', '!']
문자 발생 횟수 지정
일치하는 문자 발생 횟수:
*: 0번 또는 무한 번 나타나는 이전 문자를 나타냅니다. d*, .*
+: 이전 문자를 나타냅니다. 문자가 한 번 또는 무한히 나타남; d+
?: 이전 문자가 1번 또는 0번 나타남을 의미합니다. 일부 문자를 생략할 수 있다고 가정하면 두 번째 방법을 생략하지 않을 때
를 사용할 수도 있습니다.
{m}: before 문자가 m번 나타납니다.
{m,}: 이전 문자가 m번 이상 나타납니다. * == {0,} + ==={1,}
{m,n}: 이전 문자가 m번 나타납니다. ? === {0,1}
import re #* 代表前一个字符出现0次或者无限次 print(re.findall(r's*','sheenstar')) #['s', '', '', '', '', 's', '', '', '', ''] print(re.findall(r's*','hello')) #['', '', '', '', '', ''] #+ 代表前一个字符出现一次或者无限次 print(re.findall(r's+','sheenstar')) #['s', 's'] print(re.findall(r's+','hello')) #[] # ? 代表前一个字符出现1次或者0次 print(re.findall(r'188-?', '188 6543')) #['188'] print(re.findall(r'188-?', '188-6543')) #['188-'] print(re.findall(r'188-?', '148-6543')) #[] # 匹配电话号码 pattern = r'\d{3}[\s-]?\d{4}[\s-]?\d{4}' print(re.findall(pattern,'188 0123 4567')) #['188 0123 4567'] print(re.findall(pattern,'188-0123-4567')) #['188-0123-4567'] print(re.findall(pattern,'18801234567')) #['188-0123-4567']
연습--IP 일치
인터넷에서 정규식 생성기를 검색하고, 다른 사람이 작성한 규칙을 사용하고, 직접 테스트할 수 있습니다.
import re # | 表示或者 pattern = r'(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$' print(re.findall(pattern,'172.25.254.34')) #[('172', '25', '254', '34')] matchObj_1 = re.match(pattern,'172.25.254.34') if matchObj_1: print('匹配项:',matchObj_1.group()) #172.25.254.34 else: print('未找到匹配项') matchObj_2 = re.match(pattern,'172.25.254.343') if matchObj_2: print('匹配项:',matchObj_2.group()) else: print('未找到匹配项')
위 내용은 Python의 정규식에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!