Поиск абзаца для предложения с переменными - PullRequest
1 голос
/ 28 апреля 2020

Я использую C# для поиска абзаца и определения, содержит ли он такое предложение: "... ... сумма в 5 234,12 доллара США не соответствует нашей записи. Пожалуйста ... ..."

Что меня интересует, так это предложение «Сумма [что бы то ни было] не соответствует нашей записи». Однако как сделать сумму в долларах подстановочным знаком? Меня не волнует, что такое сумма в долларах, я просто хочу проверить, есть ли в этом абзаце шаблон предложения.

Должен ли я использовать RegEx? Как? Я бы не хотел просто искать «Сумма», а затем «не соответствует нашей записи». Чувствую, что есть лучший способ. Спасибо!

1 Ответ

2 голосов
/ 28 апреля 2020

Простейшее регулярное выражение для этого:

The amount .+ does not match our record.

Проблема с вышеприведенным заключается в том, что .+ может соответствовать чему угодно, включая, например, ложное срабатывание « Сумма », за которой следует много слов, а затем несвязанный « не соответствует нашей записи ».

Если такой крайний случай может произойти, вы можно использовать некоторые дополнительные ограничения для регулярного выражения: ограничить количество символов и / или ограничить количество возможных символов:

Ограничить количество символов : «сумма» составляет от 2 символов ($ 1) и скажем, 20 символов:

The amount .{2,20} does not match our record

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

The amount [0-9$,.]+ does not match our record

Вы также можете смешивать:

The amount [0-9$,.]{2,20} does not match our record

Проверьте это онлайн на RegexStorm

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