如何在python中获取某些分隔符之间的所有子字符串

如何在python中获取某些分隔符之间的所有子字符串,python,regex,Python,Regex,我正在尝试获取与某些分隔符匹配的所有子字符串。我的问题是,我还需要在最后一次事件结束时的角色。字符串必须介于以下任意字符之间:,/,?,=,-,\u 我试过这个正则表达式 pattern=re.compile(r”“”[./?=\-\-\\-\\-\\\-\\\+[./?=\-\-\\\-\\\+[./?=\-\-\\\-\\\\\\\]>) 在本例中: -facebook=chat.messenger? 我无法获取子字符串=聊天 我只得到了-facebook=和.messenger?我的猜

我正在尝试获取与某些分隔符匹配的所有子字符串。我的问题是,我还需要在最后一次事件结束时的角色。字符串必须介于以下任意字符之间:,/,?,=,-,\u

我试过这个正则表达式

pattern=re.compile(r”“”[./?=\-\-\\-\\-\\\-\\\+[./?=\-\-\\\-\\\+[./?=\-\-\\\-\\\\\\\]>)
在本例中:

-facebook=chat.messenger?
我无法获取子字符串=聊天


我只得到了-facebook=和.messenger?

我的猜测是,这个表达式可能就是我们想要开始的:

((?:[/?=_–.-])([a-z]+)(?:[/?=_–.-]))|([a-z]+)
测验
看起来是重叠造成了一些戏剧性的变化。如果使用
regex
模块(预计最终会替换
re
模块),您可以

import regex as re

delimiters = r'[./?=\-_]'
pattern = delimiters + r'[a-z]+' + delimiters
s = '-facebook=chat.messenger?'

print(regex.findall(pattern, s, overlapped=True))
# ['-facebook=', '=chat.', '.messenger?']
请注意,这假设所有字符都是小写的,带有
[a-z]
,并且
[./?=\-\-
是您指定的分隔符列表


希望这有帮助

嘿,我现在明白了。但是,是否有可能获得facebook、chat和messenger,并且不仅chatIt适用于本例,而且特殊字符需要是以下其中之一:,/,?,=,-,\u特殊字符的数量不确定是的,但如果我改为-facebook=chat.messenger?sdsds,它将不会得到最后一个子字符串。抱歉不清楚:pHey它已经更新了,但是可能还有很多其他的输入。可能有1000个特殊字符,它应该得到所有之间的子字符串。子字符串的数量是不确定的,需要获取这些字符之间的所有子字符串:,/,?,=,-,\u但我们现在不知道它可以有多少子字符串。现在,你给我的答案只适用于有3个子字符串的情况。谢谢你的回答,但我不想安装库。这是我实际使用的正则表达式(?=[/?=-.-)([a-z]+)[/?=-.-])
import regex as re

delimiters = r'[./?=\-_]'
pattern = delimiters + r'[a-z]+' + delimiters
s = '-facebook=chat.messenger?'

print(regex.findall(pattern, s, overlapped=True))
# ['-facebook=', '=chat.', '.messenger?']