나는 latex2html과 비슷한 것을 Python으로 작성하여 정규 표현식을 배우려고합니다. 하지만 나는 라텍스 방정식과 일치하는 방법을 알아내는 데 어려움을 겪고 있습니다. $ ... $ 어디서 ... LaTeX에서 어떤 식이든 동시에 이스케이프 시퀀스를 허용하는 형식의 것들입니다.일치하는 라텍스에 대한 정규식
즉, 문제는 $ \ $$입니다. 정규 표현식을 단지 $ \ $가 아닌 $ \ $$에 일치시키기를 원합니다.
나는 latex2html과 비슷한 것을 Python으로 작성하여 정규 표현식을 배우려고합니다. 하지만 나는 라텍스 방정식과 일치하는 방법을 알아내는 데 어려움을 겪고 있습니다. $ ... $ 어디서 ... LaTeX에서 어떤 식이든 동시에 이스케이프 시퀀스를 허용하는 형식의 것들입니다.일치하는 라텍스에 대한 정규식
즉, 문제는 $ \ $$입니다. 정규 표현식을 단지 $ \ $가 아닌 $ \ $$에 일치시키기를 원합니다.
부정적인 lookbehind를 사용하여 \ $와 일치하지 않는지 확인할 수 있습니다. 예 :
\\$.*?(?<!\\\\)\\$
예 :
print re.findall("\\$.*?(?<!\\\\)\\$", "$x= \$12$ and $x=12$")
는 두 경기를 찾을 수 :
$x= \$12$
및
$x=12$
아, 굉장해, 고마워! –
수학 외부의 텍스트에 \ $가 있으면 깨집니다. 이 경우에는 원시 문자열 [notation] (http : //docs.python)을 사용하여'? (! aaren
페 타르에서 대답은 당신이 시작할 수 있어야합니다.
또한 LaTeX의 마크 업을 처리하도록 설계 일부 파이썬 코드의 예를 살펴하는 것이 도움이 될 수 있습니다 http://hg.python.org/cpython/file/bf7329190ca6/Tools/scripts/texcheck.py
정규 표현식은 아마 LaTeX의 구문 분석을위한 가장 좋은 도구 아니다. –
LaTeX을 파싱하려면 [파서 생성기] (http://en.wikipedia.org/wiki/Comparison_of_parser_generators)를 사용하는 것이 더 나을 것입니다. – sarnold
방정식을 파싱하는 중이고 latex/dvips/convert를 통해 실행 중이므로 정규식의 이론적 인 한계는 아직 문제가되지 않습니다 ... –