이 문자열이 있습니다.Regex - Python27을 사용하여 정확한 자릿수와 단어 일치
P O BOX 32370, CA 92263
그리고이 정규식 \w{2} \d{5}
하지만 굵게 모두 텍스트를 일치합니다.
는 사실 내가 주를 추출 할 "92263는 P O의 B OX 32370, CA", 및 우편 번호.텍스트를 시작하고 공백을 넣은 다음 정확한 2 자 영문을 입력 한 다음 공백을 한 다음 정확한 5 자리를 가져 오려고합니다.
이 문자열이 있습니다.Regex - Python27을 사용하여 정확한 자릿수와 단어 일치
P O BOX 32370, CA 92263
그리고이 정규식 \w{2} \d{5}
하지만 굵게 모두 텍스트를 일치합니다.
는 사실 내가 주를 추출 할 "92263는 P O의 B OX 32370, CA", 및 우편 번호.텍스트를 시작하고 공백을 넣은 다음 정확한 2 자 영문을 입력 한 다음 공백을 한 다음 정확한 5 자리를 가져 오려고합니다.
\b
를 추가 (영숫자와 밑줄) 할 수
:
import re
re.findall(r"\b\w{2} \d{5}\b", "P O BOX 32370, CA 92263")
#['CA 92263']
텍스트 시작과 공간을 잡기 위해, 다음 을 정확한 2알파벳 다음에 하나의 공백, 정확히 5 자리.
불행하게도,이 패턴 \b\w{2} \d{5}\b
또한 귀하의 요구 사항에 맞지 않는 결과를 제공 "P O BOX 32370, 2A 92263"
와 같은 문자열에서 일치하는 항목을 찾을 수 있습니다. \w
- 모두 일치하는 알파벳 숫자 자입니다.
는 주 및이 re.search()와 match.groupdict() 다음과 같은 방법을 사용 우편 번호를 추출하는 방법 (경기의 모든 명명 된 하위 그룹 얻는다) :
s = 'P O BOX 32370, CA 92263'
m = re.search(r'\b(?P<state>[a-zA-Z]{2}) (?P<zip_code>\d{5})\b', s)
result = m.groupdict() if m else ''
print(result)
출력 :
{'zip_code': '92263', 'state': 'CA'}
당신은 것을 단어 경계 뒤에 오려면'\ b \ w {2} \ d {5} \ b'을 사용하십시오. –