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

Python 正则表达式以包括数字但不包括其他数字,python,regex,Python,Regex,以下由npinti回答。C#答案对“类似问题”毫无帮助。 我有下面的正则表达式。我也尝试了不同的变体,但不幸的是,它不会起作用 因此,如果我有下面的字符串,并希望提取23、22和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

以下由npinti回答。C#答案对“类似问题”毫无帮助。

我有下面的正则表达式。我也尝试了不同的变体,但不幸的是,它不会起作用

因此,如果我有下面的字符串,并希望提取
23、22和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))

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

您可以尝试这样的方法:
\b(?。这基本上会查找前面没有
-
且后面没有
-
的数字,方法是使用负向后看和负向前看

例如


注意:
\b
用于确保给定12-34,表达式不匹配
1
(因为后面没有
-
)和
4
(因为前面没有
-
).

您想找到的是23、22和38吗?如果不是,您能更具体一点吗?您的正则表达式显示了什么输出?负数(即
这个数字-25是负数)
)?是的,我想找到准确的23、22和38,因为它们是独立的数字,没有负数。谢谢!对于那些看C问题的人来说,那里的答案对我不起作用,所以这不是重复的答案。这个答案实际上有效!@N90J那里的解决方案有效,你只需要用替换
e> -