2011-12-13 5 views
2

나는 latex2html과 비슷한 것을 Python으로 작성하여 정규 표현식을 배우려고합니다. 하지만 나는 라텍스 방정식과 일치하는 방법을 알아내는 데 어려움을 겪고 있습니다. $ ... $ 어디서 ... LaTeX에서 어떤 식이든 동시에 이스케이프 시퀀스를 허용하는 형식의 것들입니다.일치하는 라텍스에 대한 정규식

즉, 문제는 $ \ $$입니다. 정규 표현식을 단지 $ \ $가 아닌 $ \ $$에 일치시키기를 원합니다.

+1

정규 표현식은 아마 LaTeX의 구문 분석을위한 가장 좋은 도구 아니다. –

+0

LaTeX을 파싱하려면 [파서 생성기] (http://en.wikipedia.org/wiki/Comparison_of_parser_generators)를 사용하는 것이 더 나을 것입니다. – sarnold

+0

방정식을 파싱하는 중이고 latex/dvips/convert를 통해 실행 중이므로 정규식의 이론적 인 한계는 아직 문제가되지 않습니다 ... –

답변

3

부정적인 lookbehind를 사용하여 \ $와 일치하지 않는지 확인할 수 있습니다. 예 :

\\$.*?(?<!\\\\)\\$ 

예 :

print re.findall("\\$.*?(?<!\\\\)\\$", "$x= \$12$ and $x=12$") 

는 두 경기를 찾을 수 : $x= \$12$$x=12$

+0

아, 굉장해, 고마워! –

+0

수학 외부의 텍스트에 \ $가 있으면 깨집니다. 이 경우에는 원시 문자열 [notation] (http : //docs.python)을 사용하여'? (! aaren