我想匹配以下字符串:
2017-03-17 07:33:17|ERROR|response|SOAP|validation|client|<IP_ADDR>|504021500931703170733169658002||<5_digit_figure>|A service error occurred. Maybe http message illegal or analyse failed!|<5_digit_figure>|OA:,DA:<7_digit_number>|2017-03-17 07:33:17|
我要匹配的部分是:
发生服务错误。也许http消息非法或分析失败!。
它可以是任何内容,因为它包含详细的错误消息,包括特殊字符,并且没有任何特定长度。然后它也跟着我可以匹配的其他字符。我已经能够匹配'60027'部分了,但是我很难在没有使用'。*'正则表达式的情况下捕获随机字符,因为它在此之后捕获了所有内容。有什么想法吗?
答案 0 :(得分:0)
这是第11个领域:
^(?:[^|]*\|){10}([^|]*)
目标输入将在第1组中。
答案 1 :(得分:0)
我认为正则表达式在这里是一种矫枉过正。为什么不用“|”拆分字符串,然后提取第11个子字符串。
答案 2 :(得分:0)
@ zer00ne的回答是这样做的,使用(。*?)\ |帮助我匹配下一个'|'字符。谢谢你们所有人!