正则表达式仅匹配第二组

Regex matching only second group

有什么方法可以只使用正则表达式来匹配第二组的字符串吗?

我使用的工具是Rundeck's Global Log Filters (Hightlight Output)

工具说明:

Regular Expression to test. Use groups to selectively highlight. More Use a non-grouped pattern to highlight entire match:

regex: test message: this is a test result: this is a test Use regex groups to only highlight grouped sections:

regex: this (is) a (test) result: this is a test See the Java Pattern documentation.

示例:

3)  Manager port: 2614
4)  Tcp Port: 2615
3)  Manager port: 2714
4)  Tcp Port: 2715

上面是字符串,我只想得到"3) Manager port: 2714"的匹配。这是我想出来的 (?:Manager port:.*){1}

但它仍然匹配 3) Manager port: 26143) Manager port: 2714

谢谢

(?:Manager port:.*){1} 等于 Manager port:.* 并且只匹配任何 Manager: 子字符串和该行的其余部分。

使用 java.util.regex 正则表达式库,您可以使用

[\s\S]*(Manager port:.*)

regex demo

详情

  • [\s\S]* - 尽可能多的任何 0+ 个字符(注意 [\s\S] 是一个 "hack",你可以安全地使用 (?s:.*) 做同样的事情(?s:.*) 表示打开了 DOTALL 修饰符的修饰符组,因此 . 匹配任何字符,包括换行符)
  • ( - 捕获组开始
  • Manager port: - 文字子串
  • .* - 除换行字符外的 0+ 个字符,尽可能多。
  • ) - 捕获组结束。