我正在研究我的正则表达式技能,我发现我的一个字符串在开头有重复的单词。我想删除复制品,只需要一个字-
server_server_dev1_check_1233.zzz
server_server_qa1_run_1233.xyz
server_server_dev2_1233.qqa
server_dev1_1233.zzz
data_data_dev9_check_660.log
我使用了下面的regex,但是我的输出中同时有两个server_server
^{pr2}$如果有一个或多个cd1,那么如果只有一个,那么它的输出是怎样的?
输出不必包含digits
,也不必包含.
之后的部分,即.zzz, .xyz
等
预期输出-
server_dev1_check
server_qa1_run
server_dev2
server_dev1
data_dev9_check
您可以使用一个
re.sub
调用来匹配和删除不需要的内容,并匹配和捕获所需的内容:参见regex demo
详细信息
^
-字符串开头([^_]+)
-捕获组1:除_
之外的任何1+字符(?:_\1)*
-零次或多次重复_
,后跟与组1中相同的子字符串(由于内联backreference\1
从组1检索文本)(.*)
-组2:任何0+字符,尽可能多_
-下划线\d+
-1+位数\.
-一个点\w+
-1+字字符([^.]+
也可以,1个或更多个字符而不是.
)$
-字符串结束。在替换模式是
\1\2
,也就是说,组1和组2的内容被连接起来,组成结果值。在Python demo:
^{pr2}$输出:
您可以在搜索表达式中反向引用该词:
并使用“多次”后缀,这样如果出现2次以上,它仍然有效:
^{pr2}$去掉后缀并不是最难的部分,只需捕获其余部分并丢弃结尾:
相关问题 更多 >
编程相关推荐