正则表达式查找字符串之间的所有模式
Regex find ALL patterns between string
我想从这样的字符串中匹配“000”或 \b 和“000”或“000”和 \b 之间的数字:
11101110001011101000000011101010111
我试过这样的表达方式:
(?<=000)\d+(?=000)
但我只得到最大的出现
我希望得到:
1110111
1011101
0
11101010111
您可以使用 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()
会失败并出现以下错误:
error: look-behind requires fixed-width pattern
这是因为 re
不支持 可变长度环视 但 regex
支持。
你可以像这样使用 re 模块:
re.findall(r'(?:\b|(?<=000))(\d+?)(?:000|\b)', s)
我想从这样的字符串中匹配“000”或 \b 和“000”或“000”和 \b 之间的数字:
11101110001011101000000011101010111
我试过这样的表达方式:
(?<=000)\d+(?=000)
但我只得到最大的出现
我希望得到:
1110111
1011101
0
11101010111
您可以使用 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()
会失败并出现以下错误:
error: look-behind requires fixed-width pattern
这是因为 re
不支持 可变长度环视 但 regex
支持。
你可以像这样使用 re 模块:
re.findall(r'(?:\b|(?<=000))(\d+?)(?:000|\b)', s)