不知道的语言,你可以使用的(也许最便携的)替换修饰符:
s/^(src=")([^"]+")$/$1www\.example\.com\/$2/
这应该做到以下几点:1 (并将其捕获到变量$ 1中) 2.一个或多个非双引号(“)字符后接”(并将其捕获到变量$ 2中) 3.替代'www.example .com /'在两个捕获组之间。
根据不同的语言,您可以将其包装在一个条件中,该条件检查域的存在并替换它是否未找到。
检查域名:/www\.example\.com/i
应该做的。
编辑:看评论:
对于PHP,我想这个做不同的一点。我可能会使用simplexml。我不认为这会很好的解读,不过,这里有一个正则表达式一个...
$html = file_get_contents('/path/to/file.html');
$regex_match = '/(src="|href=")[^(?:www.example.com\/)]([^"]+")/gi';
$regex_substitute = '$1www.example.com/$2';
preg_replace($regex_match, $regex_substitute, $html);
注:我还没有实际运行该调试它,它只是即兴。我会关心3件事情。首先,我不确定preg_replace如何处理/字符。不过,我认为你不关心这个问题,除非VB有类似的问题。其次,如果有可能换行符会阻碍,我可能会改变正则表达式。第三,我添加了[^(?:www\.example\.com)]
位。这应该将匹配更改为任何src或href,不会有www.example.com/,但这取决于正在使用的正则表达式的类型(POSIX/PCRE)。
其余的更改应该没问题(我添加了href =“并且还使其不区分大小写(\ i),并且要求将其设置为全局(\ g),否则它只会匹配一次)。
我希望帮助。
来源
2010-07-25 04:47:34
Tim
有没有办法来构造一个正则表达式,将工作,其他标签可以有'SRC ='属性和字符串也可以出现在CDATA其他网页内容。正则表达式不能解析HTML或XML或XHTML解析器解析,正则表达式不会,使用'wget'或者其他一些真正知道如何翻译链接的东西 – msw 2010-07-25 04:54:59