Что использует Watson Assistant для проверки регулярных выражений? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь использовать сущности, чтобы получить совпадение для некоторых данных, и регулярное выражение, похоже, не очень хорошо соответствует другим подобным движкам в Python или даже таким сайтам, как regexr.com.Вот несколько примеров:

Шаблон: ([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}-[\w]{3})

Соответствующий стиль строки: 83123e42-d9ad-a26a-b13f-b0ec91c7fedf-ABC

Однако при тестировании этого,он получает:

@id:83123e42

@id:d9ad

@id:a26a

@id:b13f

@id:b0ec91c7fedf

@id:ABC

Я пытался сгруппировать всю строку, используя разделители строк, экранирование, использовать .{4}- вместо \ w, но все безрезультатно, и часто получаяточно такое же совпадение, когда оно разбивает его на группы, а не на одно полное совпадение.

Это проблема регулярного выражения?Я попытался не группировать всю строку, но, похоже, продолжаю сталкиваться с той же самой проблемой, где он все равно не найдет последние 3 буквы.

Если Watson Assistant использует другой механизм регулярных выражений, есть лиместо с документацией, которую я просто не смог найти?Кажется, они просто предполагают, что любое нормальное регулярное выражение сработает, но пропустить переходы - странное поведение.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Закончилось поиском более прямого ответа от потрясающего помощника в канале Slack:

Оказывается, что что-то в помощнике Уотсона Regex не распознает дефисы.

Он закончил работатьсо мной и показывая мне немного SpEL, который я использую, чтобы назначить контекстную переменную, которую я могу затем использовать.

"<? input.text.extract('(\\w{8}\\-\\w{4}\\-\\w{4}\\-\\w{4}\\-\\w{12}\\-\\w{3}[^\\w]+)', 0) ?>"

0 голосов
/ 11 октября 2018

Ссылаясь на документы Watson Assistant для определения сущностей , здесь соответствующие части:

Механизм регулярных выражений свободно основан на механизме регулярных выражений Java.Служба Watson Assistant выдаст ошибку, если вы попытаетесь загрузить неподдерживаемый шаблон либо через API, либо из пользовательского интерфейса инструмента службы Watson Assistant.

Этот раздел содержит некоторую информацию об ограничениях и о том, что следует учитывать при написании выражений регулярных выражений.Наиболее значимыми являются следующие:

Шаблоны сущностей могут не содержать:
- Положительные повторения (например, x*+)
- Обратные ссылки (например, \g1)
-Условные ветви (например, (?(cond)true))

...