我想选择所有以0开头的字符串
x= '1,1,1075 1,0,39 2,4,1,22409 0,1,1,755,300 0,1,1,755,50'
我有
re.findall(r'\b0\S*', x)
但是会返回
['0,39', '0,1,1,755,300', '0,1,1,755,50']
我想要
['0,1,1,755,300', '0,1,1,755,50']
答案 0 :(得分:4)
问题是\b
也匹配数字和逗号之间的边界。最简单的方法可能是根本不使用正则表达式:
thingies = [thingy for thingy in x.split() if thingy.startswith('0')]
答案 1 :(得分:2)
不要使用逗号和数字(在任何单词\b
和非单词字符之间)匹配的边界[a-zA-Z0-9_]
,而是希望匹配字符串或空格的开头,如{{ 1}}。
(^|\s)
https://regex101.com/r/Mrzs8a/1
这将匹配字符串的开头或目标字符串之前的空格。但是如果存在的话,这也将包括空格,所以我建议修剪你的匹配字符串或用括号包裹后一部分使它成为一个组,然后从匹配中得到第1组:
(^|\s)0\S*