使用带有regex的Notepad ++将字符串(带有可变文件名)替换为不同的字符串

时间:2013-11-01 18:52:27

标签: regex notepad++

我希望使用Notepad ++在我拥有的多个网页上进行查找和替换。

我需要更改以下代码:

<OBJECT CLASSID="clsid:CA8A9780-280D-11CF-A24D-444553540000" WIDTH=800 HEIGHT=600> <PARAM NAME="SRC" VALUE="FILENAME.pdf"><EMBED SRC="FILENAME.pdf" HEIGHT=800 WIDTH=600> <NOEMBED> Your browser does not support embedded PDF files.</NOEMBED> </EMBED></OBJECT>

对此:

<meta http-equiv="refresh" content="0; url=FILENAME.pdf">

不幸的是,FILENAME.pdf在我拥有的每个文件中都有所不同。因此,我想找到它显示的任何文件名的原始字符串,然后在新字符串中使用该文件名。

原始字符串中出现两次文件名(它们将相同) - value标记param的{​​{1}}属性和{{1} } <PARAM NAME="SRC" VALUE="FILENAME.pdf">标记的属性(src)。否则,整个原始字符串应与上面列出的完全相同。

认为这应该是正则表达式,但我不知道从哪里开始。

提前致谢,

6 个答案:

答案 0 :(得分:4)

查找:<OBJECT CLASSID="clsid:CA8A9780-280D-11CF-A24D-444553540000" WIDTH=800 HEIGHT=600> <PARAM NAME="SRC" VALUE="([^"]+)"><EMBED SRC="([^"]+)" HEIGHT=800 WIDTH=600>

替换为:<meta http-equiv="refresh" content="0; url="\1">

答案 1 :(得分:2)

这是一个可以在Notepad ++中使用的解决方案,这是您所要求的。

Find what:  <OBJECT.*SRC="(.*)".*</OBJECT>

Replace with:  <meta http-equiv="refresh" content="0; url=$1">

您可以根据需要更明确地“查找内容”。

http://regex101.com也是实验的好地方。

答案 2 :(得分:0)

你可以做一个正则表达式替换,将文件名之前的前半部分替换为欲望部分,然后用新文件的最后几个字符替换原始字符串的后半部分。

答案 3 :(得分:0)

古老的解决方案......

<OBJECT CLASSID="clsid:CA8A9780-280D-11CF-A24D-444553540000" WIDTH=800 HEIGHT=600> <PARAM NAME="SRC" VALUE="替换为<meta http-equiv="refresh" content="0; url=

然后用

替换第二个

<EMBED SRC="FILENAME.pdf" HEIGHT=800 WIDTH=600> <NOEMBED> Your browser does not support embedded PDF files.</NOEMBED> </EMBED></OBJECT>一无所获。

为我工作。

编辑:注意:这不需要正则表达式,只需要在Notepad ++中进行常规查找/替换。

答案 4 :(得分:0)

我会建议您替换所需的几个......

替换1:

Find What: <OBJECT.*VALUE=
Replace With: <meta http-equiv="refresh" content="0; url=

替换2:

Find What: ><EMBED.*
Replace With: >

希望对你有用。

问候。

答案 5 :(得分:0)

尝试按regex进行搜索并替换

很好: .*EMBED\s*SRC="([^.]*.pdf)".*

替换为: <meta http-equiv="refresh" content="0; url=\1">

此处,([^.]*.pdf)将在\1中捕获pdf文件名,以便它可以处理可变文件名。