Regex, как сопоставить все пары чисел, даже если они вложенные? - PullRequest
0 голосов
/ 13 марта 2019

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

Например, входная строка - Hello1233. Следовательно, «12», «23» и «33» будут идентифицированы, и совпадение пар чисел будет равно 3. Использование чего-то вроде \ d \ d не приведет к получению пары чисел в середине («23») для меня. , Он фиксирует только 2 матча вместо 3.

В другом примере, Hello155786, идентифицирует «15» и «55» и «57» и «78» и «86» как совпадения. \ d \ d просто получает 3 матча вместо 5, которые я ищу.

Как это можно сделать через Regex, чтобы идентифицировать все пары чисел, даже те, которые находятся посередине?

1 Ответ

3 голосов
/ 13 марта 2019

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

import re

re.findall(r'(?=(\d\d))', 'hello1233')
['12', '23', '33']

re.findall(r'(?=(\d\d))', 'hello155786')
['15', '55', '57', '78', '86']

Для этого задания вам потребуется прогнозное утверждение , поэтому измените регулярное выражение с (\d\d) на (?=(\d\d)).

Из документации:

(? = ...) Соответствует, если ... соответствует следующему, но не использует ни одной строки. Это называется косвенным утверждением. Например, Исаак (? = Азимов) будет соответствовать «Исааку», только если за ним следует «Азимов».

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