我有一个多行字符串,如下所示。
rawMessage=sysUpTimeInstance-->0:0:00:05.00
snmpTrapOID.0-->linkDown.0.0
在流口水时,我已经将条件写如下。
rawMessage matches "(?i).*linkDown(.|\n|\r)*"
但它不起作用。请为我提供一些处理多行的指针。
最佳答案
我不清楚你想做什么/实现什么。你的正则表达式看起来没有错(我不知道流口水的味道和你想匹配什么)。
一般来说 (.|\n|\r)*
能够匹配包括换行符在内的任何字符。在您的示例中,“linkDown”之后没有换行符,那么它应该在那里匹配什么?
也许你需要像这样双重转义(我不知道流口水):(.|\\n|\\r)*
。
另一种可能性是使用单行修饰符s
(同样,我不知道drools是否支持此修饰符)。这使得 .
也匹配换行符,然后看起来像这样
rawMessage matches "(?i)(?s).*linkDown.*"
或者它是否应该只匹配来自“linkdown”的多行
rawMessage matches "(?i).*linkDown(?s).*"
关于regex - 流口水的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888152/