Python regexpを使ってLaTeXファイルのコメントを削除したいと思います。 LaTeXでは、コメントは "%"で始まります。しかし、%文字がエスケープされていれば( "\%")、コメントではなく、シンボル%です。Python regexpの文字セット内のバックスラッシュ( 'バックスラッシュではない'文字セットの指定方法)?
このタスクは、私がLaTeXテキストに適用する多くの正規表現の中の1つに過ぎません。私はすべてのこれらのreg expをdictsのリストに格納します。
私が直面している問題は、コメントを整理するために使用する正規表現が機能しないということです(バックスラッシュではない文字セットを指定する方法がわからないためです)。文字セットのバックスラッシュは、 ']'をエスケープし、正規表現は正しくありません。
マイコード:
regexps=[]
regexps.append({r'left':'%.*', 'right':r''}) # this strips all the comments, but messes up with the percent characters (\%)
regexps.append({r'left':'[^\]%.*', 'right':r''}) # this is incorrect (escapes the closing "]")
return applyRegexps(latexText, regexps)
def applyRegexps(text, listRegExp):
""" Applies successively many regexps to a text"""
if testMode:
print str(listRegExp)
# apply all the regexps in the list
for element in listRegExp:
left = element['left']
right = element['right']
r=re.compile(left)
text=r.sub(right,text)
return text
すべてのヘルプははるかに高く評価されます。ありがとう!
ジル
'r '[^ \\]''を使ってみましたか? '\\'はバックスラッシュをエスケープするための正規表現構文でなければならない – Bakuriu
リテラルのバックスラッシュを正規表現に入れたい場合は、それを二重にします。あなたの後ろに '[^ \\]%。*'と書かれています。 –
ありがとう、Martijn Pietersは作品に答えます。私は疲れていなければなりません... – user1821466