正则表达式捕捉重复字符

2024-03-28 23:02:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是第一次学习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

我做错什么了?提前谢谢。你知道吗


Tags: 字符串in程序forif格式match字符
3条回答

你的问题是你的正则表达式有什么问题。我想你自己的问题有答案。从“?”开始匹配0或1小数点“.”的出现,正则表达式匹配,即使该数字中没有“.”。这就是为什么你会看到非浮动被打印出来。你知道吗

re.match在字符串开头查找匹配项,但允许不匹配的字符跟在匹配项后面。你知道吗

要强制它一直匹配到底,可以向模式中添加$字符:

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

要获取浮动:

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']

相关问题 更多 >