我有以下字符串:
This$#is% Matrix# %!
我试图抓住在字母数字字符之间出现特殊符号/空格的子字符串。例如,我的目标是找到这两组子字符串:This$#is
(特殊符号#,'This'和'is'之间的$)和is% Matrix
(特殊符号%和'is'之间的空格)和“矩阵”)。
我的正则表达式findall如下:
match = re.findall(r'([\w]{1,})([\s\W]{1,})([\w]{1,})', temp)
它正在返回我:[('This', '$#', 'is')]
,而不是第二部分('is% Matrix')
。我做错了什么吗?
如果我将字符串更改为'is%Matrix'并应用相同的正则表达式模式,则会得到:[('is', '% ', 'Matrix')]
。
答案 0 :(得分:1)
您可以在希望有重叠匹配的部分上使用正向前瞻:
match = re.findall(r'([\w]{1,})([\s\W]{1,})(?=([\w]{1,}))', temp)
match
变为:
[('This', '$#', 'is'), ('is', '% ', 'Matrix')]