2013-02-15 4 views
1

문자열이 정규 표현식으로 기술 된 문자열 계열과 일치하는지 확인하고 싶습니다.정규 표현식에 문자열 일치하기

>>> re.findall("hi", "h[ia]t") 
["hi"] 
>>> re.findall("at", "h[ia]t") 
["at"] 
>>> re.findall("hat", "h[ia]t") 
["hat"] 
>>> re.findall("cat", "h[ia]t") 
[] 

하지만 문자 그대로 해석됩니다 re.findall 두 번째 인수() :

원하는 동작은 같은 것입니다.

위의 간단한 예제에서 "hit"과 "hat"을 명시 적으로 검사 할 수 있지만 다루기 힘들어 보이는 복잡한 표현식에 대해서는 물론 확인할 수 있습니다.

답변

3

정규 표현식은 생성자가 아닙니다. 문자열 대 정규식을 일치시킬 수 있지만 주어진 정규 표현식과 일치하는 모든 문자열을 구성 할 수는 없습니다. 쉘과 같은 중괄호 확장이 필요할 수도 있지만 stdlib에서 제공되는 것과 같지 않습니다 (fnmatch은 가깝지만 일치 만 제공합니다).

+1

Nitpick : [정규 언어] (http://en.wikipedia.org/wiki/Regular_language)에 대해 주어진 정규 표현식과 일치하는 모든 문자열을 구성 할 수 있습니다. [ "생성 모드"DFA] (http://en.wikipedia.org/wiki/Deterministic_finite_automaton#Accept_and_Generate_modes). (물론, 이것은 종종 무한한 집합에 대해 "모두 구성"하는 것이 무엇을 의미하는지에 달려 있습니다.) [이 질문에 대한] 실제적인 논의가 있습니다 (http://stackoverflow.com/questions/492716/reversing- a-regular-expression-in-python). OP가 실제로 이것을 필요로하지 않으며 쉘 스타일 확장을 원한다고 동의합니다. – Dougal

관련 문제