我从野外收到一长串包含 png 文件的随机字符串。
前任。
"2016.png random characters vjifj903%.png unpredictable characters"
我想用前缀替换所有.png文件myserver.com/
这样
"myserver.com/2016.png random characters myserver.com/vjifj903%.png unpredictable characters"
有没有办法做到这一点,使其不区分大小写,并且能够执行此功能?
我试过了
str.replace(".png","myserver.com/");
但我不知道如何让它显示为前缀,这只是添加一个后缀。
正则表达式:
(?<=b)[^s]+?.png
替代:
myserver.com/
用法:
import re
p = re.compile(ur'(?<=b)[^s]+?.png')
test_str = u"2016.png random characters vjifj903%.png unpredictable characters"
subst = u"myserver.com/ "
result = re.sub(p, subst, test_str)
这使得result
变量:
myserver.com/2016.png random characters myserver.com/vjifj903%.png unpredictable characters
演示:
https://regex101.com/r/pJ0oS8/4
解释:
找到一个单词边界,然后找到前面的非空格字符,直到 .png
。 然后在比赛前替补myserver.com/
。
您可以使用生成器:
>>> string = "2016.png random characters vjifj903%.png unpredictable characters"
>>> print(" ".join(("myserver.com/" * word.endswith(".png")) + word for word in string.split())
myserver.com/2016.png random characters myserver.com/vjifj903%.png unpredictable characters
如果您希望在字符串中分隔单词,则更简单:
>>> string = "2016.png random characters vjifj903%.png unpredictable characters"
>>> print [("myserver.com/" * word.endswith(".png")) + word for word in string.split()]
['myserver.com/2016.png', 'random', 'characters', 'myserver.com/vjifj903%.png', 'unpredictable', 'characters']
如果文件名中没有空格,这将起作用:
from __future__ import print_function
import re
prefix = 'myserver.com/'
s = "2016.png random characters vjifj903%.png unpredictable characters"
print(re.sub(r'([^s]*.png)', prefix + r'1', s, re.I))
输出:
myserver.com/2016.png random characters myserver.com/vjifj903%.png unpredictable characters