【发布时间】:2020-09-20 16:37:14
【问题描述】:
有人可以指出我犯的错误,为什么这里 123 不匹配?
def is_decimal(num):
import re
pattern = re.compile(r"(\b\d+\.)(?(1)\d{1,2}\b|\d+)")
result = pattern.search(num)
return bool(result)
print(is_decimal('123.11'))
print(is_decimal('123'))
print(is_decimal('0.21'))
print(is_decimal('123.1214'))
print(is_decimal('e666.86'))
预期输出:True, True, True, False, False
实际输出:True, False, True, False, False
【问题讨论】:
-
你忘记了
.。可选 -
甚至不清楚您希望匹配哪种类型的小数以及不匹配哪种类型。您还应该提及您希望所需数字遵循的模式。
-
正如@mousetail 所说,
(\b\d+\.)匹配123.而不是123,.包含在捕获组中
标签: python python-re decimal-precision