查找模式前面没有数字的正则表达式匹配

Find regex match without a digit preceding the pattern

我目前正在尝试从字符串中提取日期。这里有几个例子:

02.10 abcdef -> extract '02.10'
abcdef 03.12 -> extract '03.12'
abcdef 308.56 -> extract nothing

一个简单的正则表达式,例如 (\d{2}.\d{2}) 对于前两种情况工作正常,但我发现第三个示例的误报,即正则表达式 returns 08.56,这是有道理的。

有什么办法可以防止这个字符串被提取出来吗?我试过 [^0-9](\d{2}.\d{2}) 似乎在正则表达式调试网站上工作但当我将它编译为 python 正则表达式时却没有

import re
regex = re.compile(r'[^0-9](\d{2}.\d{2})')

提前致谢

我一开始以为您需要完整的数字,这可以通过以下方式实现: (\d*\.\d{2}) 其中 returns 308.56

但随后看到了一行:

Is there any way to prevent this string from being extracted? Which made me expect you want only two numbers, a dot and again two numbers. Otherwise the regex should return nothing.

那么答案应该是:

(?<![\w\d])(\d{2}\.\d{2})(?![\w\d])

您可以在 https://regex101.com/

上进行测试