正则表达式规则在找到特定单词时停止捕获

问题描述 投票:0回答:1

我正在 PRCE2 环境中使用正则表达式。

当我执行捕获组时,我完全知道如何在找到特定角色时停止。例如:如果我有以下日志部分:

logger=CGP  spid=5116

我知道我可以捕获记录器值并将其保存为“记录器”:

logger\=(?<logger>[^\s]+)

这意味着:在

=
之后开始捕获,并在遇到空格时停止。 但是如果我想要顺序:当遇到特定的word时停止呢?

例如,如果我有:

msg=Reject access   logger=CGP

如果我想捕获

msg
字段值,我不能使用空格作为停止字符:必须包含第一个空格。当遇到
logger
这个词时我必须停下来。

如何实现这一目标?

regex pcre2
1个回答
1
投票

您可以像这样使用它并进行以下展望:

\bmsg=(?<logger>.+?)(?=\h+logger=)

正则表达式演示

正则表达式详细信息:

  • \bmsg
    :匹配单词
    msg
  • =
    :匹配
    =
  • (?<logger>.+?)
    :捕获匹配 1+ 个任意字符的组
    logger
    (惰性匹配)
  • (?=\h+logger=)
    :先行断言我们有 1+ 个空格,后跟当前位置前面的
    logger=
    文本
© www.soinside.com 2019 - 2024. All rights reserved.