Почему это регулярное выражение не совпадает с моим верблюжьим маршрутом? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу направлять сообщения на основе содержимого, однако мое регулярное выражение для этого не соответствует тому, что я к нему добавляю.Почему это так?

Я пробовал некоторые тестовые веб-сайты с регулярными выражениями, и на этих веб-сайтах я получил полное соответствие.Я также адаптировал свое регулярное выражение к ".*\{value=1\}.*", что работает, как и ожидалось, но я думаю, что мое оригинальное решение может быть более надежным.

Это мой маршрут:

<from uri="milo-client:opc.tcp://localhost:12685?allowedSecurityPolicies=None&amp;node=RAW(ns=2;s=items-machine_lfm_reset)&amp;overrideHost=true"/>
<choice>
    <when>
        <simple>${bodyAs(String)} regex "/\bvalue=1\b/"</simple>
        <log message="Value was 1."/>
    </when>
<choice>

Этосообщение, которое приходит:

DataValue{value=Variant{value=1}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=132061080449440000, javaDate=Thu Jun 27 11:20:44 GMT 2019}, serverTime=DateTime{utcTime=132061080459370000, javaDate=Thu Jun 27 11:20:45 GMT 2019}}

Я ожидал, что это регулярное выражение совпадет, потому что, если я введу свое сообщение и регулярное выражение на любом веб-сайте тестирования регулярных выражений, я получу совпадение, но на самом деле я не получу совпадениеи мое когда утверждение не выполнено.

1 Ответ

0 голосов
/ 27 июня 2019

Ваш ввод фактически не соответствует этому регулярному выражению. Простая функция regex использует метод Matcher#matches(), который возвращает true только для полного соответствия.

JDoodle

Если вы видели, что это регулярное выражение совпадает на каком-либо веб-сайте тестера, то, вероятно, оно использует Matcher#find(), который возвращает true даже для частичного соответствия.

https://www.regexplanet.com/share/index.html?share=yyyydc68p6r

См. Matcher # соответствует javadoc :

Возвращает: Значение true, если и только если вся последовательность областей соответствует шаблону этого сопоставителя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...