正则表达式模式匹配句子

时间:2017-03-17 05:01:22

标签: regex

我想匹配以下字符串:

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'部分了,但是我很难在没有使用'。*'正则表达式的情况下捕获随机字符,因为它在此之后捕获了所有内容。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

这是第11个领域:

^(?:[^|]*\|){10}([^|]*)

目标输入将在第1组中。

答案 1 :(得分:0)

我认为正则表达式在这里是一种矫枉过正。为什么不用“|”拆分字符串,然后提取第11个子字符串。

答案 2 :(得分:0)

@ zer00ne的回答是这样做的,使用(。*?)\ |帮助我匹配下一个'|'字符。谢谢你们所有人!