这是我的输入字符串:
str = '32 -3.723 +98.6 .357 0.86'
我的正则表达是:
print re.findall('[+-]?\d*\.?\d*',str)
它返回:
['32', '', '-3.723', '', '+98.6', '', '.357', '', '0.86', '']
我无法理解为什么所有这些空字符串介于两者之间。
答案 0 :(得分:5)
我无法理解为什么所有这些遗漏都介于
之间
正则表达式的所有元素都是可选的,这意味着正则表达式可以(并且确实)匹配空字符串。
[+-]? - ZERO or one matches
\d* - ZERO or more matches
\.? - ZERO or one matches
\d* - ZERO or more matches
在输入中的每个位置,正则表达式尝试找到最长匹配。例如,这里
'32 -3.723 +98.6 .357 0.86'
^
最长的匹配是空字符串。
有几种方法可以解决这个问题。我个人会在匹配后将它们过滤掉,而不是试图将正则表达式套在不匹配的空字符串中。