Регулярное выражение, чтобы включать числа, но не другие - PullRequest
0 голосов
/ 01 августа 2020

Ответил npinti ниже. Ответы C# совершенно не помогли в «подобном вопросе».

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

Итак, если у меня есть строка ниже и я хотел бы извлечь 23, 22 and 38. Но я не хочу, чтобы он извлекал числа, разделенные дефисом, а также без отрицательных чисел: -.

string = 'Have to find 23, but not 44-58 and definitely not 88-99 but do find 22 & 38' 

my_regex = re.compile(r'(\d+)|^((?![0-9]+[^-]^[0-9]+).)*$', flags=re.I)
print(my_regex.findall(string))

Это в основном ничего полезного не возвращает.

1 Ответ

0 голосов
/ 01 августа 2020

Можно попробовать примерно так: \b(?<!-)\d+(?!-)\b. Это будет в основном искать числа, которым не предшествует - и за которыми не следует -, используя отрицательный взгляд назад и отрицательный взгляд вперед.

Пример здесь .

Примечание: \b нужен, чтобы гарантировать, что данное 12-34 выражение не соответствует 1 (поскольку за ним не следует -) и 4 (поскольку это не предшествует -).

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