패턴 p와 문자열 s가 주어지면, p는 소문자라고 가정합니다. 다음 중 어느 것이 더 효율적입니까? 정규 표현식 : 대소 문자를 구별하지 않는 comparsion의 효율성
r = re.compile(r'p', RE.IGNORECASE)
r.match(s)
... 나 ...
r = re.compile(r'p')
r.match(s.lower())
패턴 p와 문자열 s가 주어지면, p는 소문자라고 가정합니다. 다음 중 어느 것이 더 효율적입니까? 정규 표현식 : 대소 문자를 구별하지 않는 comparsion의 효율성
r = re.compile(r'p', RE.IGNORECASE)
r.match(s)
... 나 ...
r = re.compile(r'p')
r.match(s.lower())
는 정말 언어와 엔진에 의존하는 것입니다. s.lower()
및 re.IGNORECASE
은 일반적으로 현지화 또는 유니 코드 문자열 (this question 참조)을 처리하기 때문에 속도가 느립니다. 사용하는 regex 패키지가 그 것을 다루고 있고 s.lower()
메소드가 그렇지 않다면, s.lower()
메소드는 확실한 승리입니다. 그 반대.
일반적으로 s.lower()
메서드가 더 빨라질 것으로 기대합니다 (정규식보다 더 최적화되는 경향이 있습니다). 하지만 주어진 예제에서 ...
r = re.compile(r'[Pp]')
r.match(s)
... 중 어느 것보다 빠를 것입니다.
이것은 두 배 더 빠르며 무시해 줘서 고마워! '1.2s'대 샘플 데이터의 '660ms'. – FelikZ
패턴 # 2에서 모두 소문자라고 가정합니다. 맞습니까? 그렇지 않으면, 그들은 동일하지 않습니다 –
이 질문을 입력하는 데 걸리는 시간에 이것을 벤치마킹 할 수 있었고 귀하의 질문에 더 정확하고 더 정확하게 대답 할 수있었습니다. – ryeguy
@ryeguy, "벤치 마크"란 무엇을 의미합니까? – Paul