zub*_*g55 4 python regex python-2.7
下面是我检查".*"
字符串中多次连续出现的代码 。如果有多个连续出现,".*"则将其替换为 single ".*"。锻造:
import re
dot_star_check = re.compile('(\.\*){2,}')
k = ".*.*.*.*.*foo.*"
k = k.replace(?,".*") if dot_star_check.search(k) else k
print k
Run Code Online (Sandbox Code Playgroud)
我应该写什么而不是?.*用单个替换多个连续出现的.*
所以,预期输出是 .*foo.*
其他例子:
1.) foo.*.*.*.*bar.* ->foo.*bar.*
2.) .*foobar.*.*.*.*.* ->.*foobar.*
您可以使用re.sub和(?:\.\*)+作为您的模式:
import re
dot_star_check = re.compile('(?:\.\*)+')
k = ".*.*.*.*.*foo.*"
k = re.sub(dot_star_check,'.*',k)
print (k)
Run Code Online (Sandbox Code Playgroud)
印刷:
.*foo.*
Run Code Online (Sandbox Code Playgroud)
您还可以提高模式的效率,以便仅在出现 2 次或多次使用时才执行替换(?:\.\*){2,}:
import re
dot_star_check = re.compile('(?:\.\*){2,}')
k = ".*.*.*.*.*foo.*"
k = re.sub(dot_star_check,'.*',k)
print (k)
Run Code Online (Sandbox Code Playgroud)
印刷:
.*foo.*
Run Code Online (Sandbox Code Playgroud)