正则表达式在字符串之间找到所有模式

时间:2016-10-07 01:37:37

标签: python regex string digits

我想匹配“000”之间的数字或者来自\ b和“000”或“000”的数字以及来自这样的字符串的\ b:

11101110001011101000000011101010111

我尝试过这样的表达式:

(?<=000)\d+(?=000)

但我只获得最大的出现次数

我希望得到:

1110111
1011101
0
11101010111

2 个答案:

答案 0 :(得分:1)

您可以使用regex package.findall()方法:

In [1]: s = "11101110001011101000000011101010111"

In [2]: import regex

In [3]: regex.findall(r"(?<=000|^)\d+?(?=000|$)", s)
Out[3]: ['1110111', '1011101', '0', '00011101010111']

000|^000|$有助于分别匹配000或字符串的开头和结尾。另请注意?之后的\d+ - 我们正在制作non-greedy

请注意,在这种情况下,常规re.findall()将失败,并出现以下错误:

  

错误:后视需要固定宽度模式

这是因为re不支持可变长度的外观,但是regex会这样做。

答案 1 :(得分:1)

您可以使用re模块执行此操作:

re.findall(r'(?:\b|(?<=000))(\d+?)(?:000|\b)', s)
相关问题