Regex - Как игнорировать числа, заканчивающиеся запятой - PullRequest
1 голос
/ 14 февраля 2020

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

[\d+](?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,1}

Ввод:

50 подтвержденных случаев.
30 января подтверждены случаи заражения вирусом.
1300 женщин подозреваются.

Матчи:

50 Мужчины .
В январе 30 подтверждены случаи заражения вирусом.
1300 женщин подозреваются.

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

Ожидаемые:

50 Мужчины участвуют.
30 января подтверждены случаи заражения вирусом.
1300 женщин подозреваются.

Как игнорировать числа, заканчивающиеся запятыми?

Я попытался сделать следующее выражение, добавив , игнорировать, но он просто подсчитывает цифры по отдельности.

Попытка:

[\d+](?:[^a-zA-Z'-,]+[a-zA-Z'-]+){0,1}

Вывод:

50 Мужчины участвуют.
В январе 3 0 подтверждены случаи заражения вирусом.
1 , 300 женщины ** подозреваются.

1 Ответ

2 голосов
/ 14 февраля 2020

Попробуйте \d+(?:,\d+)?\s+[a-zA-Z]+

Объяснение:

\d+ - соответствует 1+ цифр

(?:...) - группа без захвата

,\d+ - совпадать с запятой , и цифрами 1+

? - совпадать с предыдущим шаблоном 0 или 1 раз ({0,1} эквивалент)

\s+ - совпадать с 1+ пробелами

[a-zA-Z]+ - соответствует 1+ строчным или прописным буквам

Демо

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