我想匹配这一行,
<center>'''<font color="blue"><font size="18.0pt">No Change Alarms Help & Information</font></font>'''</center>
并将其替换为,
=<center>'''<font color="blue">No Change Alarms Help & Information</font>'''</center>=
现在,如果标签总是字体颜色或中心,那将很简单,但它们绝对可以是任何东西,并且可以有多个。
我目前的代码是:
$html =~ s/<font size=".+">(.+)<\/font>/$1/g;
但这显然不会在每一端做=。
我想做的是:
$html =~ s/\n(.+)<font size=".+">(.+)<\/font>(.+)\n/=$1$2$3=/g;
然而,它无法匹配换行符,我无法弄清楚如何使它与它们匹配,任何线索?
(我正在将html转换为wiki标记,但转换器会填充字体大小,因此我手动将它们转换为wiki样式标题。)
答案 0 :(得分:6)
我在查询结束时所需要的只是/gm
,默认情况下它会忽略新行。
答案 1 :(得分:1)
$string_given =~ s/matching expression/sustitution/s;
我认为这将起作用,使用/ s修饰符,这通常意味着“将字符串视为单行”。这改变了“。”的行为。也可以匹配换行符。
为了将此注释的开头与结尾相匹配,我们添加/ s修饰符,如下所示:
$str =~ s/<!-- Start.*End of section -->//s;
没有/ s,根本不匹配。
答案 2 :(得分:0)
在某些情况下,由于perl如何“吸收”输入,它可能不起作用。传递-0777
作为参数将使其考虑多行。 (将其与您的其他参数一起传递,例如perl -0777pi -e
)