gpt4 book ai didi

regex - 用于捕获选定行中的组的正则表达式

转载 作者:行者123 更新时间:2023-12-05 00:49:46 25 4
gpt4 key购买 nike

我在下面有多行字符串(在 python 中)并寻找正则表达式来提取 src、dst 和严重性。所以在下面的例子中 group1 是 '10.4.180.5' ,group 2 '34.23.21.10' 和 group 3 'critical'

    src: 10.4.180.25
dst: 34.23.21.10
natsrc: 20.160.129.5
natdst: 34.33.21.10
... more lines
severity: critical
... more lines

如果我尝试像 这样的正则表达式/src: (\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b)\ndst: (\b\d{1 ,3}.\d{1,3}.\d{1,3}.\d{1,3}\b)\n/使用 gm 标志它会找到我的 src 和 dst 但不是严重性,这是几行(为了清楚起见省略了行)。有没有办法在不包括 src、dst 和严重性之间的所有这些行的情况下做到这一点?

最佳答案

您错过了实际匹配任何不以 severity 开头的行的需要在您的模式匹配之后。此外,您可以使用 {3} 缩短模式。限制量词以免重复\.\d{1,3}很多次。注意空格和数字之间的词边界是隐含的,它已经存在,不需要使用\b .


src:\s*(\d{1,3}(?:\.\d{1,3}){3})\ndst:\s*(\d{1,3}(?:\.\d{1,3}){3})(?:\n(?!severity).+)*?\nseverity:\s*(.+)

regex demo

详情
  • src: - 文字子串
  • \s* - 0+ 个空格
  • (\d{1,3}(?:\.\d{1,3}){3}) - 第 1 组:类似 IP 的模式
  • \n - 换行
  • dst:\s* - dst:后面有 0+ 个空格
  • (\d{1,3}(?:\.\d{1,3}){3}) - 第 1 组:类似 IP 的模式
  • (?:\n(?!severity).+)*? - 0+ 个序列(尽可能少)
  • \n(?!severity) - 没有跟在 severity 后面的换行符
  • .+ - 全线
  • \nseverity:\s* - 换行,severity:子字符串和 0+ 个空格
  • (.+) - 第 3 组:1 个或更多字符直到行尾

  • 请注意,此正则表达式不需要任何 DOTALL 修饰符。

    关于regex - 用于捕获选定行中的组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911043/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com