1
我想提取一個文件$
和$
之間的所有乳膠表達式,即字符串不屬於\$
和\$
probem與蟒蛇正則表達式涉及反斜線
之間考慮followingg:
import re
with open("abstracts.txt","r",encoding="utf-8") as f:
l = f.read()
with open("latex.txt","w",encoding="utf-8") as f:
for a in re.findall(r"[^\\]\$.*?[^\\]\$",l,re.S):
f.write(a+"\n")
這按我的需要工作,但它包含美元符號。但是,當我更改(*)到
for a in re.findall(r"[^\\]\$(.*?)[^\\]\$",l,re.S): #(*)
它不會做我想要的。例如字符串$\overline{\tilde \ch_0}$
轉換爲\overline{\tilde \ch_0
。
任何想法我做錯了什麼?
「哪些不在\ $和\ $」部分表示什麼?我沒有看到它在你的代碼中的任何地方被解決。 – 2015-02-10 20:50:17
請注意,爲正則表達式使用[原始字符串文字](https://docs.python.org/2/reference/lexical_analysis.html?highlight=literal#string-literals)以避免混淆。例如。在'\ $'中,反斜槓在Python級別上未轉義。 – 2015-02-10 20:51:58
@ivan_pozdeev:我已經在OP的代碼中自由地做到了這一點,以便於閱讀。 – Kevin 2015-02-10 21:06:09