python正则表达式:如何用前缀替换字符串中的所有png文件?

时间:2016-02-14 22:27:35

标签: python regex string

我从包含野生的png文件获得了大量随机字符串。

离。

"2016.png random characters vjifj903%.png unpredictable characters"

我想用前缀myserver.com/替换所有.png文件,所以

"myserver.com/2016.png random characters myserver.com/vjifj903%.png unpredictable characters"

有没有办法做到这一点,以便它不区分大小写并且能够执行此功能?

我试过

str.replace(".png","myserver.com/");但我不知道如何将其显示为前缀,这只会添加一个后缀。

3 个答案:

答案 0 :(得分:1)

的正则表达式:

(?<=\b)[^\s]+?\.png

换人:

myserver.com/\0

用法:

import re
p = re.compile(ur'(?<=\b)[^\s]+?\.png')
test_str = u"2016.png random characters vjifj903%.png unpredictable characters"
subst = u"myserver.com/\0"

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/

答案 1 :(得分:0)

如果你在文件名中没有空格,这将有效:

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

答案 2 :(得分:0)

您可以使用生成器:

>>> 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']