저는 Python을 배우고 있으며 IMAP에서받은 "From"필드의 형식을 지정해야합니다. 나는 str.find()
과 str.strip()
을 사용하고 정규식을 사용하여 시도했다. find() 등을 사용하면 내 함수가 re (내가 시간을 잰 것)보다 훨씬 빠르게 실행됩니다. 그래서 이 일 때 사용하는 것이 더 낫습니다. 누구든지 그것에 관련된 좋은 링크/기사가 있습니까? 파이썬 문서는 분명히 언급하지 않는다. ...Python : regex vs find(), strip()
1
A
답변
10
find
은 정규 표현식이 패턴과 일치하는 동안 정확한 문자 시퀀스와 일치한다. 당연히 정확한 시퀀스 만 찾는 것이 더 빠릅니다 (정규 표현식 패턴도 정확한 시퀀스 일지라도 여전히 약간의 오버 헤드가 있습니다).
위의 결과로 정확한 시퀀스를 알고있는 경우 find
을 사용하고 그렇지 않은 경우 정규식 (또는 다른 것)을 사용해야합니다. 실제로 사용해야하는 정확한 접근법은 직면 한 문제의 복잡성에 달려 있습니다.
참고로, 파이썬 re
모듈은 compile
메소드를 제공합니다.이 메소드를 사용하면 반복적으로 사용할 정규 표현식을 미리 컴파일 할 수 있습니다. 같은 패턴을 여러 번 사용하면 속도가 크게 향상 될 수 있습니다.
3
복잡한 작업을 수행하려는 경우 re
을 사용해야합니다. 문자열 메서드를 사용하는 것보다 확장 성이 좋습니다.
문자열 메서드는 단순하고 무언가를 수행하는 데 적합하며 정규 표현식을 사용하는 데 별 도움이되지 않습니다.
그래서, 어떤 일을 하느냐에 따라 다르지만 일반적으로 정규 표현식을 사용하는 것이 더 강력하기 때문에 사용해야합니다.
관련 문제
- 1. python regex multiple find
- 2. Ruby Regex vs Python Regex
- 3. Regex Strip Span tags 완전하게
- 4. htaccess regex vs PHP regex
- 5. Python regex exclude Underscore
- 6. Find and Store (Regex, PHP)
- 7. gnu find : basename에만 -regex 적용
- 8. Python Regex 대 PHP Regex
- 9. find -exec cmd {} + vs | xargs
- 10. Regex vs 파이핑 (속도면에서)
- 11. PHP : RegEx vs. ctype_ *
- 12. Regex vs String.Contains
- 13. regex : boost :: xpressive vs boost :: regex
- 14. -regex 및 -exec를 사용하여 find 명령을 실행하십시오. regex help가 필요합니다.
- 15. Komodo Edit - 기본 "Find all functions"regex
- 16. regex/linux find 명령이 예상대로 작동하지 않습니다.
- 17. Regex find 다음에 모든 인스턴스를 바꿉니다.
- 18. regex find -> found with replace
- 19. Python : Regex help
- 20. Regex in Python
- 21. python multiline regex
- 22. Python Regex Zipcode Matching
- 23. Beginning (python) regex question
- 24. python multiline group regex
- 25. Python regex findall
- 26. Python regex strange behavior
- 27. Python Regex Negative Lookbehind
- 28. VB.net에 대한 Python Regex
- 29. Python lambda with regex
- 30. Python : RegEx assistance
감사합니다. 나는 두 가지 사이에 좋은 라인이 있음을 발견했다. 나는'str.find ('abb')','str [: str.find ('abb')]'...를 여러번 실행하여 문자열 ... 그리고 그것은 여전히 빠르게보다 작동합니다. 나는 당신이 정말로 이것을 "오버 헤드"가 어느 시점에서 볼 가치가 있는지를 알기 위해 시간을 맞추어야한다고 생각합니다. – janeh
지금 '컴파일'을 시도해 볼 것입니다. – janeh