2017-02-02 1 views
4

regexp를 사용하여 일부 문자열을 토큰 화하는 방법에 대해 많은 질문이 있습니다.정규 표현식 패턴 ITSELF를 토큰 화하는 방법은 무엇입니까?

하지만 정규 표현식 패턴을 토큰 화하기 위해서는 주제에 대한 게시물이 있지만 찾을 수는 없습니다.

예 : 일부 regexp 함수가 호출 될 때 나는이 일을 믿고있어

^\w$     -> ['^', '\w', '&'] 
[3-7]*     -> ['[3-7]*'] 
\w+\s\w+    -> ['\w+', '\s', '\w+'] 
(xyz)*\s[a-zA-Z]+[0-9]? -> ['(xyz)*','\s','[a-zA-Z]+','[0-9]?'] 

는 후드 파이썬에서 이루어집니다.

+2

정규 표현식은 유한 상태 기계의 줄임말로 생각할 수 있습니다. http://stackoverflow.com/questions/525004/short-example-of-regular-expression-converted-to-state-machine –

+0

문제는'[-z]와'[az]'와 같은 구조입니다 - 메타 코드는 위치에 따라 그 의미가 바뀝니다. 몇 가지 다른 것들 :'[*] *'와'[[] '. 엄격한 왼쪽에서 오른쪽으로 구문 분석하는 것이 유일한 방법이라고 생각합니다. – usr2564301

+0

BTW Python은 [boost] (http://www.boost.org/)를 사용합니다. – usr2564301

답변

0

한 곳에서 시작 : PyPy project에는 (주로) Python으로 된 Python 구현이 있습니다. 소스 배포본의 re.pysre-compile.c:_compile()을 호출하여 작업을 수행합니다. 원하는 출력 양식을 제공하기 위해 해킹 할 수 있습니다.

편집 또한, 자바 스크립트 XRegExp library는 확장 구문에 정규 표현식에 구문 분석 및 표준 구문을 렌더링합니다. parser routine이 도움이 될 수 있습니다.

관련 문제