3

我希望使用 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( <PARAM NAME="SRC" VALUE="FILENAME.pdf">) 和标记的src属性embed( <EMBED SRC="FILENAME.pdf" HEIGHT=800 WIDTH=600>)。否则,整个原始字符串应该与上面列出的相同。

认为使用正则表达式应该很简单,但我不知道从哪里开始。

提前致谢,

4

6 回答 6

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">

于 2013-11-01T19:34:42.980 回答
2

这是您所要求的一种适用于 Notepad++ 的解决方案。

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

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

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

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

于 2013-11-01T19:44:17.853 回答
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++ 中的正常查找/替换。

于 2013-11-01T19:16:22.497 回答
0

您可以进行正则表达式替换以将文件名之前的前半部分替换为所需部分,然后将相同文件名后面的原始字符串的后半部分替换为新字符串的最后几个字符。

于 2013-11-01T19:05:04.330 回答
0

我会推荐几个替换你正在寻找的东西......

替换1:

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

替换2:

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

希望这对你有用。

问候。

于 2013-11-01T19:26:04.347 回答
0

尝试关注regex搜索和替换

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

用。。。来代替 : <meta http-equiv="refresh" content="0; url=\1">

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

于 2013-11-01T19:29:09.523 回答