正则表达式。拆分字符串取决于分隔符并包含它们

2024-10-01 11:41:35 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的str示例,我需要在最后一个单词附近保存分隔符,如点、破折号和空格

str示例:

   a = 'Beautiful. is. better5-than ugly'

我尝试的

re.split('\W+', a)
['Beautiful', 'is', 'better5', 'than', 'ugly']

预期输出:

 ['Beautiful.', ' ', 'is.', ' ', 'better5-', 'than', ' ', 'ugly']

可能吗


Tags: re示例is单词split空格than分隔符
2条回答
>>> import re
>>> a = 'Beautiful. is. better5-than ugly'
>>> re.findall("\w+[.-]?|\s+", a)
['Beautiful.', ' ', 'is.', ' ', 'better5-', 'than', ' ', 'ugly']
  • \w+[.-]?将单词与结尾处可选的点或连字符匹配
  • \s+匹配空白
  • |确保我们捕获上述任一项

因为我们希望分隔符成为结果的一部分,所以我们应该保留它们,我在正则表达式中使用了“lookback”和“lookahead”断言。您可以在^{} module's documentation中阅读有关它们的信息

import re
a = 'Beautiful. is. better5-than ugly'
print(re.split(r'(?<=[-. ])|(?= )', a))

附加说明:使用“lookbehind”断言,我可以获得几乎相同的结果,但是对于最后一个单词“than”,我需要在我的正则表达式模式中包含一个“lookbehind”断言(我的意思是|(?= )),以分割该空间

相关问题 更多 >