用正则表达式在python中获取重复的字符串

时间:2017-08-14 10:15:23

标签: python regex

我希望在此示例中使用regex(python)获取重复字符串:

man less

我测试了这种模式:

#txt1#txt2#txt3#txt4

但不能工作 谢谢

1 个答案:

答案 0 :(得分:1)

模式末尾的延迟点模式.*?始终与空字符串匹配,因为.*?匹配尽可能少出现量化模式,因为它可以匹配0个字符,它匹配0个字符。

单字幕方案

对于具有#分隔值的字符串,您可以使用带有[^#]量词的否定字符类*

import re
s = '#txt1#txt2#txt3#txt4'
print(re.findall(r"#([^#]*)", s))
# => ['txt1', 'txt2', 'txt3', 'txt4']

请参阅Python demo

#([^#]*)模式与#匹配,然后匹配并捕获除#以外的任何0+字符的第1组。 re.findall查找模式的所有非重叠事件,并仅返回捕获到组1中的值。

注意:要确保结果中没有空值,您应该将*量词替换为匹配 1的+量词或更多事件

多字符分隔符

在这种情况下,您应该选择分割方法。如果您只有一个硬编码分隔符,例如#|,您只需要str.split()

s = '#|txt1#|txt2#|txt3#|txt4'
res = filter(None, s.split('#|'))
print(res)
# => ['txt1', 'txt2', 'txt3', 'txt4']

another Python demo。请注意,filter(None, res)会从res删除所有空字符串。

如果您的分隔符未经过硬编码,则可以使用re.split