首页 > 解决方案 > 如何在python中的某些分隔符之间获取所有子字符串

问题描述

我正在尝试获取与某些分隔符匹配的所有子字符串。我的问题是我还需要最后一次出现的字符。字符串必须介于以下任何字符之间: . , / , ? , = , - , _

我试过这个正则表达式

pattern = re.compile(r"""[./?=\-_][^./?=\-_]+[./?=\-_]""")

在这个例子中:

-facebook=chat.messenger?

我无法获得子字符串 =chat。

我只得到 -facebook= 和 .messenger?

标签: pythonregex

解决方案


看起来重叠是造成一些戏剧性的原因。如果使用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],这[./?=\-_]是您指定的分隔符列表。

希望这可以帮助!


推荐阅读