正则表达式仅匹配第二组

时间:2017-10-23 20:03:12

标签: regex rundeck

有没有办法只使用正则表达式匹配第二组字符串?

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

工具说明:

  

正则表达式进行测试。使用组有选择地突出显示。更多   使用非分组模式突出显示整个匹配:

     

正则表达式:测试消息:这是一个测试结果:这是一个测试使用正则表达式   组仅突出显示分组的部分:

     

正则表达式:这是(测试)   结果:此 测试请参阅Java Pattern   文档。

示例:

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

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

请参阅regex demo

<强>详情

  • [\s\S]* - 尽可能多的0个字符(请注意[\s\S]是“黑客”),您可以安全地使用(?s:.*)执行与{{1}相同的操作}表示一个启用了DOTALL修饰符的修饰符组,因此(?s:.*)匹配包括换行符的任何字符)
  • . - 捕获群组
  • ( - 文字子字符串
  • Manager port: - 除了换行符之外的0 +字符,尽可能多。
  • .* - 捕捉小组结束。