正则表达式捕捉重复的字符

时间:2017-10-29 23:23:41

标签: python regex

我第一次学习Python正则表达式,我在重复字符方面遇到了麻烦。

我编写了这个程序来测试格式化为浮点数的字符串:

for stuff in ["0", "1", "0.111", "0000001", ".011", "..0", "0..0"]:
    if match("[0-9]*\.?[0-9]+", stuff):
        print(stuff)

我的印象是\.指定了.个字符,?表示只能有0个或其中一个字符。

但是,我得到了这个输出:

0
1
0.111
0000001
.011
0..0

我做错了什么?提前谢谢。

3 个答案:

答案 0 :(得分:0)

获得花车:

import re
stuffList = ["0", "1", "0.111", "0000001", ".011", "..0", "0..0"]
final_data = [i for i in stuffList if re.findall('\d+\.\d+|^\.\d+', i)]

输出:

['0.111', '.011']

答案 1 :(得分:0)

re.match在字符串的开头查找匹配项,但允许不匹配的字符跟随匹配。

要强制它一直匹配到最后,您可以在模式中添加$字符:

match("[0-9]*\.?[0-9]+$", stuff)

答案 2 :(得分:0)

你的问题是你的正则表达式有什么问题。我想你在自己的问题上有答案。由于'?'匹配 0或1 出现的十进制'。',即使数字没有'你的正则表达式匹配。'在里面。这就是为什么你看到即使是非浮动印刷的原因。