我正在通过.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*.aiq\S*",line)
我知道\S
会匹配任何非空格,但我无法想象
如何摆脱额外的文本,因为我只需要上面指定的字符串。
它给了我输出:
Pxi_load_vector("i_and_v.aiq")
答案 0 :(得分:1)
阅读整个文件,然后在其上应用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']
答案 1 :(得分:0)
match=re.findall(r"""[^"']*\.aiq[^"']*""",line)
使用与negation based
匹配的[^"']*
参见演示。