我试图从一串二进制数字(0和1)中提取'1'的所有序列,并将它们转换为list
。
例如,字符串可以是001111000110000111111
形式。我正在寻找一个类似于["1111", "11", "111111"]
的列表。
我正在使用带有以下findall
的python ([1]+?)0
函数。但是,它与1的最后一个序列不匹配,因为它以EOS
而不是'0'结束。我尝试使用([1]+?)0|$
尝试将EOS
捕获为有效分隔符。
但那也失败了。
任何帮助都表示赞赏。
答案 0 :(得分:1)
答案 1 :(得分:0)
我认为你正在寻找的正则表达式是:
1+(?!\0)
即。匹配一个或多个未跟随0的1。
你所拥有的是专门寻找后跟0的那些。
你可以在各种jsfiddle网站上玩正则表达式,并对他们正在做的事情进行交互式解释。例如:
答案 2 :(得分:0)
匹配:要匹配一个或多个1
,请使用1+
正则表达式。
拆分:您可以拆分1个或多个0
并删除空元素。
请参阅Python demo:
import re
s = '001111000110000111111'
print(re.findall('1+', s)) # ['1111', '11', '111111']
print([x for x in re.split('0+', s) if x]) # ['1111', '11', '111111']