为什么这个 perl 替换不起作用?

发布于 2024-12-20 20:51:35 字数 309 浏览 1 评论 0原文

$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱格式化 2024-12-27 20:51:35

[CDATA[cyber_monday_deal]] 是一个字符类。

[CDATA[cyber_monday_deal]] is a character class.

萝莉病 2024-12-27 20:51:35

从您最近的问题来看,您使用 Regex 处理 XML 的尝试失败了。您显然甚至不明白方括号必须在正则表达式中转义。因此,规范不应该

/<![CDATA[cyber_monday_deal]]>.../

,但是

/<!\[CDATA\[...\]\]>.../

请使用正确的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

/<![CDATA[cyber_monday_deal]]>.../

but

/<!\[CDATA\[...\]\]>.../

Use a proper XML parsing module, please. http://perl-xml.sourceforge.net/faq/

情绪少女 2024-12-27 20:51:35

您可以使用 \Q 来指示正则表达式的一部分,其中 [ 等元字符应被视为文字字符:

$test2 =~ s/\Q<id><![CDATA[cyber_monday_deal]]><\/id>/<id><![CDATA[cyber monday deal 3]]><\/id>/m;

\Q 的效果以 \E 或正则表达式的末尾结束。它不会使 $@ 文字化,但会使任何用它们文字化的正则表达式进行插值。

You can use \Q to indicate a part of the regex where metacharacters such as [ should be considered as literal characters:

$test2 =~ s/\Q<id><![CDATA[cyber_monday_deal]]><\/id>/<id><![CDATA[cyber monday deal 3]]><\/id>/m;

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文