많은 메타 문자가있는 패턴을 검색해야합니다. 현재 긴 정규식을 사용합니다.파이썬에서 모든 메타 문자를 이스케이프 처리합니다.
prodObjMatcher=re.compile(r"""^(?P<nodeName>[\w\/\:\[\]\<\>\@\$]+)""", re.S|re.M|re.I|re.X)
는
나는 하나의 재 컴파일에 같은 패턴의 조합을 작성해야 할 때 특히 고통스러운 (내 실제 패턴은 매우 긴 그래서 난 그냥 내가 도움을 필요로하는 몇 가지 관련 부분을 붙여).
패턴 길이를 줄이기위한 파이썬 방법이 있습니까?
빈 문자열과 일치하는 경우 끝에'. *?'를 사용하는 이유는 무엇입니까? 또한,'^','-',']'및''\''를 제외하고는 문자 클래스에서 문자를 이스케이프 할 필요가 없습니다. 문자 클래스에서 이스케이프 처리되지 않은 문자들 (''\''제외)도 유지할 수있는 방법이 있습니다. –
주석 외에도'xml' ** 구문 분석 ** (노드 이름 ???)과 같은 냄새가납니다. – Jan
@ WiktorStribiżew *** 실제 패턴이 매우 길어서 도움이 필요한 부분을 붙여 넣었습니다. *** 질문에 대한 답을 얻는 것이 좋을까요? 나는 아직 파이썬에서 정규식에 대한 전문가가 아니므로 일반적으로 메타 문자를 이스케이프 처리합니다. 아마도 탈출 할 시간과없는 탈출구를 배울 것입니다. –