【问题标题】:Perl Regex extract substring because other substring existsPerl Regex 提取子字符串,因为存在其他子字符串
【发布时间】:2017-08-08 14:14:57
【问题描述】:

我需要提取一个子字符串,因为存在另一个子字符串。在以下示例中,单词 ERROR: 继续值 12345678。我需要值 12345678。在第二个示例中,ERROR: 不存在。因此我不需要结果。这是据我所知:

ERROR:.*(\d)

20170808 错误:已达到 TXN 12345678 请求限制。

20170808 WARN:TXN 22345678 等待过期。

如果您是正则表达式专家,那么您知道上述匹配项

错误:TXN 12345678

组只有数字 8。我需要整数。谢谢你的帮助。

【问题讨论】:

    标签: regex perl substring conditional


    【解决方案1】:

    你可以使用

    ERROR:.*?(\d+)
    

    请参阅regex demo。在这里,.*? 将尽可能少地匹配除换行符之外的任何 0+ 字符(因为 *? 是一个惰性量词),(\d+) 将捕获到第 1 组一个或多个数字。

    或者,也可以

    ERROR:.*\D(\d+)
    

    another demo。在这里,.*\D 将尽可能匹配除换行符之外的任何 0+ 字符 many(因为 * 是一个贪婪的量词),直到并包括最后一个非数字字符(使用\D) 然后(\d+) 将捕获到第 1 组中的一位或多位数字。

    选择最适合您的方案的模式(如果数字是ERROR: 之后的第一组数字,则第一个最好,而当该组数字是一行中的最后一个数字时,第二个最好)。

    【讨论】:

      猜你喜欢
      • 2023-01-07
      • 2022-01-26
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2010-11-29
      • 2011-08-21
      相关资源
      最近更新 更多