[英]Perl Regex return named groups in capture Group one
我尝试获取一个正则表达式,它返回第一个捕获组中的匹配项。
我放入正则表达式的应用程序只能使用第一个捕获组。
每个正则表达式都在工作,但我不能将这两个组合在一起,使 output 始终在第一个捕获组中
输入 1:
Event: Started Flapping
正则表达式 1:
^Event: (\S+ Flapping)
Output 1:
Started Flapping
输入 2:
Event: CRIT -> OK
正则表达式 2:
^Event:\s+\S+\s+\S+\s+(\S+)
输出 2:
OK
我试过的正则表达式(?:^Event:\s+\S+\s+\S+\s+(?P<service>\S+)$|^Event: (?P<flap>Started Flapping)|((?P=service)|(?P=flap)))
您可以使用 分支重置组:
^Event:\s+(?|\S+\s+\S+\s+(\S+)|(Started Flapping))$
# or, to factor in \S+\s+:
^Event:\s+(?|(?:\S+\s+){2}(\S+)|(Started Flapping))$
请参阅正则表达式演示。 详情:
^
- 字符串的开头Event:
- 固定字符串\s+
- 一个或多个空格(?|
- 分支重置组的开始:
\S+\s+\S+\s+
- 两次出现一个或多个非空格,后跟一个或多个空格(\S+)
- 第 1 组:一个或多个非空格|
- 或者
(Started Flapping)
- 第 1 组: Started Flapping
固定琴弦)
- 分支重置组结束$
- 字符串结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.