使用正则表达式在Python中获取重复字符串

2024-04-25 13:49:10 发布

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

在这个例子中,我想用regex(python)得到一个重复的字符串:

#txt1#txt2#txt3#txt4

我测试了这个模式:

\#(.*?)

但是不要工作 谢谢


Tags: 字符串模式例子regextxt1txt2txt3txt4
1条回答
网友
1楼 · 发布于 2024-04-25 13:49:10

模式末尾的延迟点模式.*?总是匹配空字符串,因为.*?匹配的量化模式的出现次数尽可能少,而且因为它可以匹配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中的值。你知道吗

注意:为了确保结果中没有空值,您应该将*量词替换为+一个匹配一个或多个出现次数的量词。你知道吗

多字符分隔符

在这种情况下,您应该选择拆分方法。如果您只有一个硬编码的分隔符,比如#|,那么您只需要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。你知道吗

相关问题 更多 >

    热门问题