【问题标题】:Python regex extract strings between matching strings, including matching stringsPython regex 提取匹配字符串之间的字符串,包括匹配字符串
【发布时间】:2020-11-13 08:50:49
【问题描述】:

我正在尝试在两个字符串(包括锚定字符串)之间提取文本。文件内容被简化为这样的变量:-

variable = '70026 TTBB 70128 70026 00020 01006 ' \
           '11925 04300 22919 03903 33911 00114 ' \
           '44880 02233 55834 00227 66806 02056 ' \
           '77788 00647 88771 00661 41414 /////=' \
           'PPBB 70128 70026 90001 02512 01510 ' \
           '03013 90234 05012 04022 04521 90567 '\
           '04533 04025 03023 9089/ 02526 02525 '\
           '91246 02022 01521 9535/ 08510 04006=' \
           'TTAA 70121 70026 99020 01006 02512 ' \
           '00171 00301 03014 92793 04300 05014 ' \
           '85472 00627 04029 70025 03947 02027 ' \
           '31313 42408 81101  03026='

我想得到的是TT= 之间的字符串(包括这些锚点)并将所有匹配的字符串保存为列表。预期的输出是:-

['TTBB 70128 ... 88771 41414 /////=', 'TTAA 70121 ... 42408 81101  03026=']

我尝试的是:-

print(re.findall(r'TT(.*?)=', variable))

这让我接近我想要的,如下所示:-

['BB 70128 ... 88771 41414 /////', 'AA 70121 ... 42408 81101  03026']

正如您在上面看到的,不包括匹配字符串。那么如何告诉re 在结果中包含TT=

【问题讨论】:

    标签: python regex


    【解决方案1】:

    如果我理解正确,您还需要将TT= 分组:

    print(re.findall(r'(TT.*?=)', variable))
    

    【讨论】:

    • 如果变量在同一行,它可以工作。但是在一个文件中,有很多这样的代码块,它们在TT= 之间包含多个线刹车。你是怎么做到的?
    • 没关系。我必须删除所有 \n 字符以使其成为单个变量。
    • 如果您想对换行符进行分组,也可以使用 re.DOTALL 标志,例如print(re.findall(r'(TT.*?=)', variable, re.DOTALL))
    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2010-11-22
    • 2021-06-02
    相关资源
    最近更新 更多