繁体   English   中英

如何在perl正则表达式中匹配换行符\\ n?

[英]How to match a newline \n in a perl regex?

我想匹配这条线,

<center>'''<font color="blue"><font size="18.0pt">No Change Alarms Help &amp; Information</font></font>'''</center>

并替换它,

=<center>'''<font color="blue">No Change Alarms Help &amp; Information</font>'''</center>=

现在,如果标签总是字体颜色或中心,那将很简单,但它们绝对可以是任何东西,并且可以有多个。

我目前的代码是这样的:

$html =~ s/<font size=".+">(.+)<\/font>/$1/g;

但这显然不会在每一端做=。

我想做的是:

$html =~ s/\n(.+)<font size=".+">(.+)<\/font>(.+)\n/=$1$2$3=/g;

然而,它无法匹配换行符,我无法弄清楚如何使它匹配它们,任何线索?

(我正在将html转换为wiki标记,但转换器会填充字体大小,因此我手动将它们转换为wiki样式标题。)

在我的查询结束时,我需要的只是/gm ,默认情况下它忽略了新的行。

$string_given =~ s/matching expression/sustitution/s;

我认为这将起作用,使用/ s修饰符,它通常意味着“将字符串视为单行”。 这改变了“。”的行为。 也匹配换行符。

为了匹配此注释的开头到结尾,我们添加/ s修饰符,如下所示:

$str =~ s/<!-- Start.*End of section -->//s;

没有/ s,它根本不匹配。

在某些情况下,它可能无法工作,因为perl如何“啜饮”输入。 传递-0777作为参数将使其考虑多行。 (将其与您的其他参数一起传递,例如perl -0777pi -e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM