regex - 流口水的正则表达式

标签 regex drools

我有一个多行字符串,如下所示。

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/

相关文章:

java - 如何增强 Java 模式,使其在匹配项周围也包含特殊字符?

Drools 循环触发

drools - Drools 7.57.0.Final 中的模式匹配问题

jboss - 事件锁定未按预期工作

jboss - 将Drools与JBossESB集成

java - 从 SSLPeerUnverifiedException 中提取通用名称的最佳方法?

regex - Java - 查找不在句号之后的单词

python - 将具有相似(但略有不同)子字符串的字符串重新映射到相同的结果

java - 正则表达式:用传递给的方法的输出替换匹配的文本

java - Drools 获得 WorkingMemory 以查看 DRL 中的事实