正则表达式包含数字,但不包含其他数字



下面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))

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

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

此处为示例。

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

相关内容

  • 没有找到相关文章

最新更新