如何更改几段 html 代码
how to change several piece of html code
我在 html 页中有以下几行
<td style="color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;">Assurez-vous de bien recevoir tous nos messages en ajoutant reteuteu@cab05.net a votre carnet d'adresses.<br />
Si vous avez des difficultés pour visualiser ce message, rendez-vous sur <a style="color:#8C8C8C;" target="_blank" href="#"><u>cette page</u></a>.</td>
我只需要将上面的替换为
[{test}]
或者喜欢这个
href="#">reteuteu.fr
并将其替换为:
href="http://mm.eulerian.net/dynclick/reteuteu/?eml-publisher=reteuteu&eml-name=deme_faible&eemail={email}&eurl=https://www.reteuteu.fr/?utm_source=ANIM&utm_medium=Targeting&utm_campaign=deme_faible&utm_term=CCCC_seg_men&utm_content=website">reteuteu.fr
我试图通过使用像这样的简单 bash 工具来保持简单:sed -e 's~SEARCH_STRING~REPLACE_STRING~g' <string_to_be_searched>
问题是 sed 对于只有一行的字符串效果很好,但是当我有换行符或 &
.
这样的元字符时它会出错
我听说 python 或 perl 可以做到这一点,但我不知道该怎么做。
最终我想成为运行这样
python script.py STRING_TO_SEARCH_WITH_LINE_FEED_OR_META_CHARACTERS STRING_TO_BE_REPLACE
或
perl script.pl STRING_TO_SEARCH_WITH_LINE_FEED_OR_META_CHARACTERS STRING_TO_BE_REPLACE
我阅读了有关 HTQL 或 HTML 解析器的信息,但我需要有关如何操作的提示。
非常感谢您提供的任何线索。
第一个例子的预期输出是这样的
<td style="color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;">[{test}] <a style="color:#8C8C8C;" target="_blank" href="#"><u>cette page</u></a>.</td>
通过 Perl。
$ perl -0777pe "s/<td style=\"color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;\">\K.*?(?=<a\b)/[{test}] /sg" file
<td style="color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;">[{test}] <a style="color:#8C8C8C;" target="_blank" href="#"><u>cette page</u></a>.</td>
\K
在最后打印时丢弃先前匹配的字符。 \K
将到目前为止匹配的文本保留在整个正则表达式匹配之外。所以之前匹配的 <td>
标签被丢弃。然后这个 .*?
匹配所有字符直到 a
标签的开头。这里 .
也匹配换行符,因为我们使用了 DOTALL 修饰符 s
。 (?=<a\b)
肯定前瞻断言匹配后必须跟 <a
和 \b
边界。
-0777
将 Record Separator 值变为 null,从而允许正则表达式匹配换行符。
我在 html 页中有以下几行
<td style="color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;">Assurez-vous de bien recevoir tous nos messages en ajoutant reteuteu@cab05.net a votre carnet d'adresses.<br />
Si vous avez des difficultés pour visualiser ce message, rendez-vous sur <a style="color:#8C8C8C;" target="_blank" href="#"><u>cette page</u></a>.</td>
我只需要将上面的替换为
[{test}]
或者喜欢这个
href="#">reteuteu.fr
并将其替换为:
href="http://mm.eulerian.net/dynclick/reteuteu/?eml-publisher=reteuteu&eml-name=deme_faible&eemail={email}&eurl=https://www.reteuteu.fr/?utm_source=ANIM&utm_medium=Targeting&utm_campaign=deme_faible&utm_term=CCCC_seg_men&utm_content=website">reteuteu.fr
我试图通过使用像这样的简单 bash 工具来保持简单:sed -e 's~SEARCH_STRING~REPLACE_STRING~g' <string_to_be_searched>
问题是 sed 对于只有一行的字符串效果很好,但是当我有换行符或 &
.
我听说 python 或 perl 可以做到这一点,但我不知道该怎么做。
最终我想成为运行这样
python script.py STRING_TO_SEARCH_WITH_LINE_FEED_OR_META_CHARACTERS STRING_TO_BE_REPLACE
或
perl script.pl STRING_TO_SEARCH_WITH_LINE_FEED_OR_META_CHARACTERS STRING_TO_BE_REPLACE
我阅读了有关 HTQL 或 HTML 解析器的信息,但我需要有关如何操作的提示。
非常感谢您提供的任何线索。
第一个例子的预期输出是这样的
<td style="color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;">[{test}] <a style="color:#8C8C8C;" target="_blank" href="#"><u>cette page</u></a>.</td>
通过 Perl。
$ perl -0777pe "s/<td style=\"color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;\">\K.*?(?=<a\b)/[{test}] /sg" file
<td style="color:#8C8C8C;font-size:10px;font-family:Arial,'Helvetica';text-align:center; padding:0 15px 0 15px;">[{test}] <a style="color:#8C8C8C;" target="_blank" href="#"><u>cette page</u></a>.</td>
\K
在最后打印时丢弃先前匹配的字符。 \K
将到目前为止匹配的文本保留在整个正则表达式匹配之外。所以之前匹配的 <td>
标签被丢弃。然后这个 .*?
匹配所有字符直到 a
标签的开头。这里 .
也匹配换行符,因为我们使用了 DOTALL 修饰符 s
。 (?=<a\b)
肯定前瞻断言匹配后必须跟 <a
和 \b
边界。
-0777
将 Record Separator 值变为 null,从而允许正则表达式匹配换行符。