python正则表达式对重复字符进行拆分



我有一个字符串,例如

--------------------------------
hello world !
--------------------------------
world hello !
--------------------------------
! hello world

我希望能够分割连字符上的行,连字符可以是可变长度的,这就是我决定使用regex的原因,我想从中提取的信息是['hello world !', 'world hello !', '! hello world']。我尝试过使用静态数目的连字符分割字符串,这很有效,但不确定如果它是可变长度,该如何处理。我试过做:

re.split(r'-{3,}', str1)

然而,这似乎不起作用

您可以使用.strip()方法从输入和结果分割块中去除不必要的空白:

import re
p = re.compile(r'(?m)^-{3,}$')
t = "--------------------------------nhello world !n--------------------------------nworld hello !n--------------------------------n! hello world"
result = [x.strip() for x in p.split(t.strip("-nr"))]
print(result)

至于正则表达式,我建议限制为仅连字符,其中(?m)^-{3,}$匹配行开始(^)和行结束($)之间的3个或多个连字符(由于(?m),这些锚点匹配行边界,而不是字符串边界)。

请参阅IDEONE演示

最新更新