문자열 s
이 더 크지 만 간단히하기 위해 단축했습니다.정규 표현식에서 일치하지 않는 선택적 문자열
>>> import re
>>> s = "Blah. Tel.: 555 44 33 22."
>>> m = re.search(r"\s*Tel\.:\s*(?P<telephone>.+?)\.", s)
>>> m.group("telephone")
'555 44 33 22'
코드,하지만 난 그것을 선택하게 ()?
에 정규식을 포장하면, 나는 어떤 전화를하지 않습니다.
>>> m = re.search(r"(\s*Tel\.:\s*(?P<telephone>.+?)\.)?", s)
>>> m
<_sre.SRE_Match object at 0x9369890>
>>> m.group("telephone")
무엇이 문제입니까? 감사!
편집 :
이 내가 큰 파일의 모든 라인에서 많은 값을 얻고있는 더 큰 정규 표현식의 일부입니다.
regex = r"^(?P<title>.[^(]+);" \
"\s*(?P<subtitle>.+)\." \
"\s*Tel\.:\s*(?P<telephone>.+?)(\.|;)" \
"\s*(?P<url>(www\.|http://).+?\.[a-zA-Z]+)(\.|;)" \
"(\s*(?P<text>.+?)\.)?" \
"\s*coor:(\s*(?P<lat>.+?),\s*(?P<long>.+?))?$"
하나 개의 샘플 라인 수 :
l = "Title title; Subtitle, subtitle. Tel.: 555 33 44 11. www.url.com. coor: 11.11111, -2.222222
그리고 다른 샘플 라인 : 그것은 정말 큰 정규식
l = "Title2 title; Subtitle2, subtitle. Tel.: 555 33 44 11. www.url2.com. coor: 44.444444, -6.66666
, 난 그것을 게시되지 않은 이유가 그래서.
너 어디 맞아! 도움을 주신 모든 분들께 감사드립니다. :) – Menda