2014-02-06 4 views
0

거리 이름이 많으며 "세인트 어거스틴"과 "세인트 어거스틴"과 같은 거리 이름을 정리하려고하므로 "세인트 어거스틴"으로 바꿀 수 있습니다. "St"또는 "St."중 하나와 일치하려고하는데 다음을 사용하여 시도했지만 점과 일치하지 않는 것 같습니다. 파이썬을 사용하고 있습니다.정규식, 임의의 점 앞에 일치하는 점

\bSt\.?\b 
+0

어쩌면 당신은 관련 코드의 일부는, 오류가 아무것도 해결되지 정규식 자체 –

답변

0

이하는 선택 일치하는 그룹 시도해보십시오

r'\bSt(\.)?\b' 

예를 들어, 일치를 하나 Important 또는 Import : 리터럴 파이썬의 문자열에서

r'\Import(ant)?\' 
+0

외에 다른 곳에서 유래 할 수 공유하고 싶습니다. – user2357112

0

Python docs say:

s, \ b는 백 스페이스 문자 인 ASCII 값 8입니다. 원시 문자열을 사용하지 않으면 Python이 \ b를 백 스페이스로 변환하고 RE가 예상대로 일치하지 않습니다.

그래서 (그렇지 않으면 \b 백 스페이스를 의미 원시 문자열) (게시물 정보의 부족 때문에) 문제에 대한 해결책이 r'\bSt\.?\b' 것 추측 임.

0

.은 단어 문자가 아니므로 점 뒤에 단어 경계가 없습니다. 단어 경계 전에 점을 찾습니다

>>> re.findall(r'\bSt\.?\b', 'St. Augustine') 
['St'] 
>>> re.findall(r'\bSt\b\.?', 'St. Augustine') 
['St.']