求匹配指定字符串所有数字的正则表达式,解决正则代码报错
问题解决方案
匹配目标字符串中所有数字的正则表达式
目标字符串里的数字都是三位格式,用以下正则就能精准匹配所有数字:\d{3}
如果要避免误匹配和其他字符连在一起的数字(比如遇到1234这类长数字时不想截取其中三位),可以用\b\d{3}\b匹配独立的三位数字,不过在你的目标字符串场景里,\d{3}就足够满足需求。
代码错误修复
你的代码报错是因为正则表达式没加引号——re.findall的第一个参数必须是字符串类型的正则表达式,你直接写[0-5][0-9]会被Python当成列表,触发IndexError。另外,这个正则只能匹配两位数字,也不符合你提取三位数字的需求。
修复后的代码:
import re fetch_code = re.findall(r"\d{3}", "Arizona: 479, 501, 870. California: 209, 213, 650.") print(fetch_code)
运行后会输出:['479', '501', '870', '209', '213', '650'],正好拿到所有目标数字。
如果之后需要匹配任意长度的数字,也可以把正则改成\d+,不过针对当前场景,\d{3}是最精准的选择。
内容的提问来源于stack exchange,提问作者Yilin Zuo
相关产品推荐
相关产品推荐

