플래그를 사용한 re.sub의 일관되지 않은 동작
Python의 re.sub 함수는 문자열에서 패턴의 모든 항목을 바꾸도록 설계되었습니다. 그러나 사용자가 플래그를 인수로 지정할 때 예기치 않은 동작이 발생할 수 있습니다.
Python 문서에는 re.MULTILINE 플래그를 사용하면 패턴의 '^' 문자가 각 줄의 시작 부분에서 일치하도록 허용한다고 명시되어 있습니다. 이러한 사양에도 불구하고 re.sub가 re.MULTILINE 플래그를 사용할 때 패턴의 모든 항목을 바꾸는 데 실패하는 경우가 있다고 사용자가 보고했습니다.
이 동작의 이유를 이해하려면 다음의 정의를 검토하는 것이 중요합니다. re.sub:
re.sub(pattern, repl, string[, count, flags])
네 번째 인수는 수행할 최대 교체 횟수를 지정하는 개수입니다. 사용자가 이 인수 위치에 플래그(예: re.MULTILINE)를 지정하면 플래그 대신 개수로 해석됩니다.
이 문제를 극복하려면 다음 두 가지 접근 방식이 있습니다.
명명된 인수 사용:
플래그를 명명된 인수로 명시적으로 지정하면 혼동을 피할 수 있습니다. 예를 들면 다음과 같습니다.
re.sub('^//', '', s, flags=re.MULTILINE)
Regex 먼저 컴파일하기:
또는 re.sub를 호출하기 전에 re.compile 함수를 사용하여 정규식을 컴파일할 수 있습니다.
re.sub(re.compile('^//', re.MULTILINE), '', s)
위 내용은 Python의 정규식과 함께 플래그를 사용할 때 re.sub가 오작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!