대체 정규 표현식이있는 문자열의 특정 부분을 찾으려고합니다. 대안 경로에서 정의 된 스팟을 안전하게 참조하려면 어떻게해야합니까? 나는하려고 생각했다OR 연산자에서 파이썬으로 Regex로 대체 문자열을 잡아낼 수 있습니까?
m=re.match("(A(?P<name>.+)B|C(?P<name>.+)D)", text)
match=m.group("name")
그러나 이름을 재정의하는 것과 충돌이있다. 이 정규 표현식은 구성 파일에서 나오고 일치로 이어질 중첩 수준/색인 값을 보장 할 수 없으므로 색인을 사용하여 m.group
을 사용하면 문제가 발생합니다.
편집 : 설정에는 텍스트와 일치하는 원본과 별도의 소스가 있습니다. 나는
import re
for text in ["ABBC", "DEEEF", "GHHI"]:
for regex in ["(A(.+)C|D(.+)F)", "G(.+)I"]:
m=re.match(regex, text)
if m:
print(m.group(1)) # should actually match the middle characters, but doesn't work generally
break
미래에 성장할 수있는 가능한 정규식의 수를 달성하고 싶습니다, 그래서 일반적인 솔루션
코드에서 변경할 수 있고 변경할 수없는 항목이 확실하지 않습니다. 이전 답변에서 남긴 주석에서 정규 표현식을 변경할 수없는 것처럼 보입니까? – Jerry
Regex에 필요한 구문을 정의 할 수 있습니다. 하지만 그때에도 여러 개의 독립적 인 Regex *가 있으며 응답에 제안 된 것처럼 거대한 Regex를 안정적으로 생성하는 것이 어렵습니다. – Gerenuk
가능한 해결책은 https://pypi.python.org/pypi/regex/2014.11.14를 사용하는 것입니다. 표준 방법을 놓쳤다면 확실하지 않습니다 ... – Gerenuk