我正在通过.txt
文件搜索字符串。文件由文本组成:
Script dchsdpa uplink(Pxi_load_vector("i_and_v.aiq")
sim_recharge_bx('d_and_v.aiq')
我要提取的字符串是:
i_and_v.aiq
d_and_v.aiq
仅表示引号内的字符串。
我编写了以下代码:
for line in input_file:
match=re.findall(r"S*.aiqS*",line)
我知道S
会匹配任何非空格,但我无法弄清楚如何摆脱多余的文本,因为我只需要我上面指定的字符串。
它给了我输出:
Pxi_load_vector("i_and_v.aiq")
读取整个文件,然后对其应用re.findall
函数。
with open('file') as f:
print re.findall(r"""(?<=')[^']*.aiq(?=')|(?<=")[^"]*.aiq(?=")""", f.read())
例:
>>> s = '''Script dchsdpa uplink(Pxi_load_vector("i_and_v.aiq")
sim_recharge_bx('d_and_v.aiq')'''
>>> re.findall(r"""(?<=')[^']*.aiq(?=')|(?<=")[^"]*.aiq(?=")""", s)
['i_and_v.aiq', 'd_and_v.aiq']
或
>>> [j for i in re.findall(r"""'([^']*.aiq)'|"([^"]*.aiq)"""", s) for j in i if j]
['i_and_v.aiq', 'd_and_v.aiq']
或
>>> [j for i in re.findall(r"""(['"])((?:(?!1).)*.aiq)1""", s) for j in i if j not in ["'", '"']]
['i_and_v.aiq', 'd_and_v.aiq']
match=re.findall(r"""[^"']*.aiq[^"']*""",line)
将negation based
与[^"']*
一起使用
请参阅演示。
https://regex101.com/r/sJ9gM7/100#python