반응형
플래그가있는 Python re.sub가 모든 발생을 대체하지는 않습니다.
Python 문서는 다음과 같이 말합니다.
re.MULTILINE : 지정된 경우 패턴 문자 '^'는 문자열의 시작 부분과 각 줄의 시작 부분에서 일치합니다 (각 줄 바꿈 바로 뒤) ... 기본적으로 '^'는 문자열의 시작 부분에서만 일치합니다. ...
그래서 다음과 같은 예상치 못한 결과가 나오면 어떻게됩니까?
>>> 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
:
re.sub(pattern, repl, string[, count, flags])
네 번째 인수는 개수이며, re.MULTILINE
플래그가 아니라 개수로 사용하고 있습니다 (8).
명명 된 인수를 사용하십시오.
re.sub('^//', '', s, flags=re.MULTILINE)
또는 먼저 정규식을 컴파일하십시오.
re.sub(re.compile('^//', re.MULTILINE), '', s)
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)
참조 URL : https://stackoverflow.com/questions/42581/python-re-sub-with-a-flag-does-not-replace-all-occurrences
반응형
'IT박스' 카테고리의 다른 글
armeabi는 무엇이며 왜 사용합니까? (0) | 2020.12.29 |
---|---|
여러 공간을 단일 공간으로 병합합니다. (0) | 2020.12.29 |
Matplotlib : 축 색상 변경 (0) | 2020.12.29 |
컴파일 타임에 대상 프레임 워크 버전 감지 (0) | 2020.12.29 |
HTML 선택 컨트롤에 수평선을 어떻게 추가합니까? (0) | 2020.12.29 |