【发布时间】:2015-03-17 19:21:00
【问题描述】:
我需要一个 Python 正则表达式来匹配整数,但 不是 从字符串输入中浮动。
以下正则表达式使用否定的前瞻和否定的后瞻来确保数字既不在前面也不在后面跟着'.'。
(?<!\.)[0-9]+(?!\.)
它仅适用于个位数的浮点数。例如
int_regex = re.compile("(?<!\.)[0-9]+(?!\.)")
str_int_list = int_regex.findall(text)
Correct when no more than 1 digit on each side of a float:
"1 + 2 + 3.0 + .4 + 5. + 66 + 777" --> ['1', '2', '66', '777']
Incorrectly matches the '1' of '12.3' and the '5' of '.45'.
"12.3 + .45 + 678" --> ['1', '5', '678']
问题似乎是正则表达式中间的[0-9]+不够贪心。
我尝试在前瞻和后视中添加数字匹配,但在 Python 错误中遇到了“后视需要是恒定长度”错误。
任何关于如何只匹配整数而不匹配浮点数的建议将不胜感激。
【问题讨论】:
-
整数总是被空格包围吗?为什么
.4是整数? -
.4 不是整数,我不想匹配它(如示例所示)。