有没有办法只使用正则表达式匹配第二组字符串?
我使用的工具是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: 2614
和3) Manager port: 2714
由于
答案 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 +字符,尽可能多。.*
- 捕捉小组结束。