문제

Python 문서에서는 다음과 같이 말합니다.

re.다중 라인:지정되면 패턴 문자 '^'는 문자열의 시작 부분과 각 줄의 시작 부분(각 개행 바로 다음)에서 일치합니다.기본적으로 '^'는 문자열의 시작 부분에서만 일치합니다.

그렇다면 다음과 같은 예상치 못한 결과가 나오면 어떻게 될까요?

>>> import re
>>> s = """// The quick brown fox.
... // Jumped over the lazy dog."""
>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.\n// Jumped over the lazy dog.'
도움이 되었습니까?

해결책

의 정의를 보세요 re.sub:

sub(pattern, repl, string[, count])

네 번째 인수는 사용 중인 개수입니다. re.MULTILINE (8)을 플래그가 아닌 개수로 사용합니다.

플래그를 사용하려면 정규식을 컴파일해야 합니다.

re.sub(re.compile('^//', re.MULTILINE), '', s)

flags Python 2.7에 인수가 추가되었으므로 이제 전체 정의는 다음과 같습니다.

re.sub(pattern, repl, string[, count, flags])

의미하는 것은:

re.sub('^//', '', s, flags=re.MULTILINE)

공장.

다른 팁

re.sub('(?m)^//', '', s)

전체 정의 re.sub 이다:

re.sub(pattern, repl, string[, count, flags])

즉, Python에 매개변수가 무엇인지 알려주면 다음을 전달할 수 있습니다. flags 통과하지 않고 count:

re.sub('^//', '', s, flags=re.MULTILINE)

또는 더 간결하게 말하면:

re.sub('^//', '', s, flags=re.M)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top