Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 搜索到正则表达式中字符串的结尾_Python_Regex - Fatal编程技术网

Python 搜索到正则表达式中字符串的结尾

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.匹配一个或多

我正在尝试从二进制数字字符串(0和1)中提取“1”的所有序列,并将它们放入
列表中
例如,字符串的形式可能是
001111000110011111
。我正在寻找这样的列表
[“1111”、“11”、“111111”]

我将python
findall
函数与以下
([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']