RegEx替换IMG src属性
我有一个RegEx替换IMG src属性,regex,delphi,delphi-7,Regex,Delphi,Delphi 7,我有一个var baseURL我知道是:baseURL=c:\whatever\mybasedir\ 我的HTML源代码可能包含以下内容: <IMG alt="foo" src="file://c:\whatever\mybasedir\root\foo\bla.gif"> or/and: <IMG alt="foo" src="file://c:/whatever/mybasedir/root/foo/bla.gif"> or/and: <IMG src="c:\
var baseURL
我知道是:baseURL=c:\whatever\mybasedir\
我的HTML源代码可能包含以下内容:
<IMG alt="foo" src="file://c:\whatever\mybasedir\root\foo\bla.gif">
or/and:
<IMG alt="foo" src="file://c:/whatever/mybasedir/root/foo/bla.gif">
or/and:
<IMG src="c:\whatever\mybasedir\root\foo\bla.gif">
or/and:
<IMG src="c:\whatever\mybasedir/root/foo/bla.gif">
或者,如果存在alt属性(或其他。属性的顺序可能会有所不同):
如何匹配
?
你知道什么正则表达式(或其他方法)可以在这里提供帮助吗
(我不能使用DOM来做这项工作,因为IE8/9 DOM首先导致了这种情况-自动将
添加到所有相关的src标记中)您可以这样做
正则表达式:(
替换为:$1src=“
替换()
带$1$3
编辑
希望这能奏效
替换()
有了$1$3$4$6
我总是很惊讶你们RegEx人能构建多么复杂的模式+1它几乎可以工作!但结果是(对于第一个/和第三个IMG):src=“root\foo\bla.gif”
(反斜杠),我需要root/foo/bla.gif”
(斜杠)如果路径已经包含root
,例如c:\whatever\root\mybasedir\root\foo\bla.gif
,那么应该考虑哪个根来开始路径?mybasedir后面的一个?mybasedir后面的一个是“root”。这是正确的,但路径可能已经包含“root”(如我的注释所示)-因此,在这种情况下,$3将匹配root\mybasedir\root\foo\bla.gif
。我总是很惊讶你的RegEx人可以构建什么复杂的模式+1我仍然需要将root\foo\bla.gif
替换为root/foo/bla.gif
我如何匹配c:.whather.mybasedir.
?我已经将你的RE改为(并在$2
上使用回调将“\”替换为“/”。在这样的时刻总是值得咨询@bobince:@DavidHeffernan,这很有趣:我如何在HTML上使用XML解析器?(不是XHTML)嗯,你需要一个HTML解析器来完成这项工作。当然,正则表达式可以做你需要做的事情。顺便说一句,今天我碰巧穿着我的Stack Overflow T恤,上面有bobince著名答案的文本。
<IMG src="root/foo/bla.gif">
<IMG alt="foo" src="root/foo/bla.gif">