我正在 PRCE2 环境中使用正则表达式。
当我执行捕获组时,我完全知道如何在找到特定角色时停止。例如:如果我有以下日志部分:
logger=CGP spid=5116
我知道我可以捕获记录器值并将其保存为“记录器”:
logger\=(?<logger>[^\s]+)
这意味着:在
=
之后开始捕获,并在遇到空格时停止。
但是如果我想要顺序:当遇到特定的word时停止呢?
例如,如果我有:
msg=Reject access logger=CGP
如果我想捕获
msg
字段值,我不能使用空格作为停止字符:必须包含第一个空格。当遇到logger
这个词时我必须停下来。
如何实现这一目标?
您可以像这样使用它并进行以下展望:
\bmsg=(?<logger>.+?)(?=\h+logger=)
正则表达式详细信息:
\bmsg
:匹配单词msg
=
:匹配=
(?<logger>.+?)
:捕获匹配 1+ 个任意字符的组 logger
(惰性匹配)(?=\h+logger=)
:先行断言我们有 1+ 个空格,后跟当前位置前面的 logger=
文本