正则表达式以包括数字但不包括其他数字

2024-05-18 06:12:50 发布

您现在位置:Python中文网/ 问答频道 /正文

以下由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))

这基本上不会返回任何有用的结果


Tags: and字符串答案restringmynot数字
1条回答
网友
1楼 · 发布于 2024-05-18 06:12:50

您可以尝试这样的方法:\b(?<!-)\d+(?!-)\b。这基本上是通过使用负向后看和负向前看来查找前面没有-且后面没有-的数字

例如here

注意:\b的存在是为了确保给定12-34,表达式与1(因为它后面没有-)和4(因为它前面没有-)不匹配

相关问题 更多 >