我正在尝试从文本文件中提取字符串,因为我是正则表达式的新手,所以我被卡住了



我正在通过.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

最新更新