我有以下几行......
INFO | jvm 1 | 2017/04/11 23:59:52 | 2017-04-11 23:59:52:[ - JmsConsumer[PQ.ACCOUNTS.IN]] JMS01 - Accounts Queue ACCTS1 INFO Msg Detected
INFO | jvm 1 | 2017/04/11 23:59:52 | 2017-04-11 23:59:52:[ default-workqueue-14] sendSoapTarget INFO RESPONSE: <soap:Envelope
我创建了一个正则表达式
/(?:.*)(?:\| )(?:.*)(?:\| )(.*)(?:\| )(?:.*)(\:\[.*\[?.*\]?\])(?:\s)(.{30})/g
在组#2中 - 如何修改正则表达式以捕获以下内容
得到结果:
答案 0 :(得分:1)
您可以使用非捕获组来进行出价 - 首先选择外部括号,然后尝试查找选择中是否有内部括号并捕获它们之间的内容,或者仅捕获外部括号之间的内容:
(?:\[(?:.*?\[(.*?)\].*?|(.*?))\])
您没有指定您使用的语言,但这将返回两个组 - 如果Line 1
,第一个捕获组将包含捕获的字符串,如果Line 2
第二个捕获组将包含括号之间的内容。在这两种情况下,只会填充一个捕获组。