>  기사  >  백엔드 개발  >  re.MULTILINE 플래그를 사용할 때 re.sub가 첫 번째 항목만 바꾸는 이유는 무엇입니까?

re.MULTILINE 플래그를 사용할 때 re.sub가 첫 번째 항목만 바꾸는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-06 03:14:02834검색

Why is re.sub Only Replacing the First Occurrence When Using re.MULTILINE Flag?

Python re.sub 예기치 않은 교체 문제

Python 문서에 따르면 re.MULTILINE 플래그는 정규식의 ^ 문자를 다음과 같이 허용합니다. 각 줄의 시작 부분에서 일치합니다. 그러나 re.sub 함수와 함께 이 플래그를 사용하면 패턴의 첫 번째 발생만 대체되는 예상치 못한 동작이 발생할 수 있습니다.

기본 원인:

re.MULTILINE 플래그가 잘못 사용되기 때문에 문제가 발생합니다. re.sub의 네 번째 인수는 수행할 최대 대체 횟수를 지정하는 count 매개변수용입니다. 플래그 대신 count 값으로 re.MULTILINE을 사용하면 잘못된 결과가 발생합니다.

해결책:

이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.

  1. 명명된 인수 사용:
re.sub('^//', '', s, flags=re.MULTILINE)

flags=re.MULTILINE을 지정하면 re.MULTILINE 플래그를 명시적으로 설정하여 의도한 대로 사용됩니다.

  1. 먼저 정규식을 컴파일합니다.
re.sub(re.compile('^//', re.MULTILINE), '', s)

re.MULTILINE 플래그를 사용하여 정규식을 컴파일하면 플래그가 패턴에 올바르게 적용됩니다.

이러한 방법 중 하나를 사용하면 re.sub가 예상대로 re.MULTILINE 플래그로 패턴의 모든 항목을 바꿀 수 있습니다.

위 내용은 re.MULTILINE 플래그를 사용할 때 re.sub가 첫 번째 항목만 바꾸는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.