Регулярное выражение с слюнями - PullRequest
1 голос
/ 25 октября 2011

У меня есть строка с многострочным, как показано ниже.

rawMessage=sysUpTimeInstance-->0:0:00:05.00
snmpTrapOID.0-->linkDown.0.0

В слюни, когда часть я написал условие, как показано ниже.

rawMessage  matches "(?i).*linkDown(.|\n|\r)*"

, но он не работает. Пожалуйста, предоставьте мне несколько указателей для обработки многострочного.

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Мне не ясно, что вы хотите сделать / достичь. Ваше регулярное выражение выглядит не так (я не знаю вкус слюни и то, что вы хотите соответствовать).
В целом (.|\n|\r)* может соответствовать любому символу, включая переводы строки. В вашем примере после "linkDown" нет новой строки, так что должно совпадать?

Может быть, вам нужно дважды убежать (я не знаю, для слюней), например: (.|\\n|\\r)*.

Другой возможностью является использование однострочного модификатора s (Опять же, я не знаю, поддерживает ли drools этот модификатор). Это делает . совпадением также с символами новой строки, после чего может выглядеть примерно так

rawMessage  matches "(?i)(?s).*linkDown.*"

или если он должен совпадать только с многострочным из "linkdown" на

rawMessage  matches "(?i).*linkDown(?s).*"
0 голосов
/ 27 октября 2011

Drools использует стандартные регулярные выражения Java.Как упоминалось в предыдущем ответе, ваше выражение выглядит неправильно.И да, вам нужно дважды избегать специальных символов, как это было бы в Java.Просто проверьте Javadoc для класса Pattern в API Java.

...