为什么这个 perl 替换不起作用?
$test2 = "<id><![CDATA[cyber_monday_deal]]></id>\n";
$test2 =~ s/<id><![CDATA[cyber_monday_deal]]><\/id>/<id><![CDATA[cyber monday deal 3]]><\/id>/m;
print $test2
我得到的是旧的 test2,而不是替换的 test2。
是否有任何引号可以转义要替换的整个字符串?
$test2 = "<id><![CDATA[cyber_monday_deal]]></id>\n";
$test2 =~ s/<id><![CDATA[cyber_monday_deal]]><\/id>/<id><![CDATA[cyber monday deal 3]]><\/id>/m;
print $test2
I get the old test2, and not the substituted one.
Does any quote work to escape the whole string to be substituted.?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
[CDATA[cyber_monday_deal]]
是一个字符类。[CDATA[cyber_monday_deal]]
is a character class.从您最近的问题来看,您使用 Regex 处理 XML 的尝试失败了。您显然甚至不明白方括号必须在正则表达式中转义。因此,规范不应该
,但是
请使用正确的XML 解析模块。 http://perl-xml.sourceforge.net/faq/
Judging on your recent questions, your attempt to process XML with Regex is failing. You clearly do not even understand that square-brackets must be escaped in regexes. Thus the specification shouldn't be
but
Use a proper XML parsing module, please. http://perl-xml.sourceforge.net/faq/
您可以使用 \Q 来指示正则表达式的一部分,其中 [ 等元字符应被视为文字字符:
\Q 的效果以 \E 或正则表达式的末尾结束。它不会使
$
或@
文字化,但会使任何用它们文字化的正则表达式进行插值。You can use \Q to indicate a part of the regex where metacharacters such as [ should be considered as literal characters:
The effect of \Q ends at \E or the end of the regex. It doesn't make
$
or@
literal, but does make any regex interpolated with them literal.