Python 搜索到正则表达式中字符串的结尾
我正在尝试从二进制数字字符串(0和1)中提取“1”的所有序列,并将它们放入Python 搜索到正则表达式中字符串的结尾,python,regex,Python,Regex,我正在尝试从二进制数字字符串(0和1)中提取“1”的所有序列,并将它们放入列表中例如,字符串的形式可能是001111000110011111。我正在寻找这样的列表[“1111”、“11”、“111111”] 我将pythonfindall函数与以下([1]+?)0一起使用。但是,它与1的最后一个序列不匹配,因为它以EOS而不是“0”结尾。我尝试使用([1]+?)0 |$来捕获EOS作为有效的分隔符 但这也失败了。感谢您的帮助 我想你要找的正则表达式是: 1+(?!\0) i、 e.匹配一个或多
列表中
例如,字符串的形式可能是001111000110011111
。我正在寻找这样的列表[“1111”、“11”、“111111”]
我将pythonfindall
函数与以下([1]+?)0
一起使用。但是,它与1的最后一个序列不匹配,因为它以EOS
而不是“0”结尾。我尝试使用([1]+?)0 |$
来捕获EOS
作为有效的分隔符
但这也失败了。
感谢您的帮助 我想你要找的正则表达式是:
1+(?!\0)
i、 e.匹配一个或多个不后跟0的1
您所拥有的是专门寻找后跟0的
您可以在各种类似jsfiddle的站点上使用regex,并对它们所做的事情进行交互式解释。例:
您正在尝试的内容:
([1]+?)0
什么会起作用:
(1+)
匹配:要匹配一个或多个1
s,请使用1+
regex
拆分:您可以使用一个或多个0
s拆分并删除空元素
见:
从正则表达式中删除0
。您可以只使用'1+'
regex(如果您需要正则表达式)。即使捕获组也不是必需的re.findall
将给出与1+
相同的结果,谢谢Nehal。。非常感谢。谢谢Wiktor。工作得很好。。我想我把我的RE复杂化了!
(1+)
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']