>백엔드 개발 >파이썬 튜토리얼 >Python 정규식과 문자열을 일치시키는 방법은 무엇입니까?

Python 정규식과 문자열을 일치시키는 방법은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-06-13 15:49:2111129검색

Python 정규식과 문자열을 일치시키는 방법은 무엇입니까?

파이썬 정규 표현식과 문자열을 일치시키는 방법은 무엇입니까?

파이썬 정규식으로 문자열을 일치시키는 방법:

1. 단일 위치에서 문자열 일치

이 경우 이 (.+?) 정규식을 사용하여 문자열 "을 추출할 수 있습니다. a123b", ab 사이의 값 123을 추출하려면 정규 표현식과 함께 findall을 사용할 수 있습니다. 그러면 상황과 일치하는 모든 조건이 포함된 목록이 반환됩니다. 코드는 다음과 같습니다.

import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#
输出['123']

1.1 Greedy and non- 탐욕스러운 일치

문자열 "a123b456b"가 있는 경우 a와 첫 번째 발생 b 사이의 값 대신 a와 마지막 b 사이의 모든 값을 일치시키려면 ? 비 욕심 일치. 코드는 다음과 같습니다.

import re
str = "a123b456b"
print re.findall(r"a(.+?)b", str)
#输出['123']#?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况
print re.findall(r"a(.+)b", str)
#输出['123b456']
print re.findall(r"a(.*)b", str)
#输出['123b456']

1.2 다중 줄 일치

여러 줄을 일치시키려면 re.S를 추가한 후 re.S 및 re.M 플래그를 추가해야 합니다. , .는 기본적으로 개행 문자와 일치합니다. 코드는 다음과 같습니다.

str = "a23b\na34b"
re.findall(r"a(\d+)b.+a(\d+)b", str)
#输出[]
#因为不能处理str中间有\n换行的情况
re.findall(r"a(\d+)b.+a(\d+)b", str, re.S)
#s输出[('23', '34')]

re.M을 추가하면 ^$ 표시는 기본적으로 첫 번째 줄과만 일치합니다.

str = "a23b\na34b"
re.findall(r"^a(\d+)b", str)
#输出['23']
re.findall(r"^a(\d+)b", str, re.M)
#输出['23', '34']

2. 다중 연속 이 경우 정규 표현식(?P8a11bc632ea32a57b3e3693c7987c420...)을 사용하여 위치 문자열 일치를 추출할 수 있습니다. 웹 서버 액세스 로그: '192.168.0.1 25/Oct/2012:14 :46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"', 우리는 원합니다 이 로그 줄의 모든 내용을 추출하려면 여러 개의 (?Pexpr)을 작성하여 추출할 수 있습니다. 여기서 name은 해당 위치에서 문자열 이름을 지정한 변수로 변경할 수 있고 expr은 일반 변수로 변경할 수 있습니다. 추출 위치 표현은 다음과 같습니다.

import re
line ='192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" 
"Mozilla/5.0"'
reg = re.compile(&#39;^(?P<remote_ip>[^ ]*) (?P<date>[^ ]*) "(?P<request>[^"]*)" 
(?P<status>[^ ]*) (?P<size>[^ ]*) "(?P<referrer>[^"]*)" "(?P<user_agent>[^"]*)"&#39;)
regMatch = reg.match(line)
linebits = regMatch.groupdict()
print linebits
for k, v in linebits.items() :
    print k+": "+v

출력 결과는 다음과 같습니다.

status: 200
referrer:  
request: GET /api HTTP/1.1
user_agent: Mozilla/5.0
date: 25/Oct/2012:14:46:34size: 44
remote_ip: 192.168.0.1

추천 튜토리얼: "

python video tutorial

"

위 내용은 Python 정규식과 문자열을 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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