【问题标题】:Regex to match multiple lines after a particular string正则表达式匹配特定字符串后的多行
【发布时间】:2021-08-09 16:36:45
【问题描述】:

我在匹配字符串 /aggr_1/plex0/rg0 之后的多行时遇到问题。

/vs_root/plex0/rg0:
0b.00.11           0   0.06
0b.00.9            0   0.06
0b.00.1            0   0.06
/aggr_1/plex0/rg0:
***0a.01.1           40 223.16
0a.01.2           40 223.17
0a.01.3           40 223.84
0b.05.3           40 219.74
0b.05.6           40 219.75
0a.01.4           43 219.66
0b.05.0           42 223.17***
/aggr0_3/plex0/rg0:
0a.03.9            0   2.19
0a.03.10           0   2.23
0a.03.11           0   2.25
0a.03.12           0   0.76
0a.03.13           0   0.62

我需要匹配第 4 行 (/aggr_1/plex0/rg0:) 之后的 7 行。 我尝试了很多变化,但没有运气。 提前致谢。

【问题讨论】:

  • 到目前为止你有什么尝试?

标签: python regex multiline


【解决方案1】:

试试这个模式:(?<=/aggr_1/plex0/rg0:\n)[^/]+

Demo

代码:

import re

text = """
/vs_root/plex0/rg0:
0b.00.11           0   0.06
0b.00.9            0   0.06
0b.00.1            0   0.06
/aggr_1/plex0/rg0:
***0a.01.1           40 223.16
0a.01.2           40 223.17
0a.01.3           40 223.84
0b.05.3           40 219.74
0b.05.6           40 219.75
0a.01.4           43 219.66
0b.05.0           42 223.17***
/aggr0_3/plex0/rg0:
0a.03.9            0   2.19
0a.03.10           0   2.23
0a.03.11           0   2.25
0a.03.12           0   0.76
0a.03.13           0   0.62
"""

pattern = "(?<=/aggr_1/plex0/rg0:\n)[^/]+"
print(re.findall(pattern, text))

输出:

['***0a.01.1           40 223.16\n0a.01.2           40 223.17\n0a.01.3           40 223.84\n0b.05.3           40 219.74\n0b.05.6           40 219.75\n0a.01.4           43 219.66\n0b.05.0           42 223.17***\n']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2014-10-08
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多