$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,而不是替换的。
是否有任何引号可以转义整个字符串以进行替换。?
答案 0 :(得分:4)
[CDATA[cyber_monday_deal]]
是一个角色类。
答案 1 :(得分:1)
根据您最近的问题判断,使用Regex处理XML的尝试失败了。您显然甚至不明白方括号必须在正则表达式中转义。因此规范不应该是
/<![CDATA[cyber_monday_deal]]>.../
但是
/<!\[CDATA\[...\]\]>.../
请使用正确的XML解析模块。 http://perl-xml.sourceforge.net/faq/
答案 2 :(得分:0)
您可以使用\ Q来表示正则表达式的一部分,其中元字符如[应该被视为文字字符:
$test2 =~ s/\Q<id><![CDATA[cyber_monday_deal]]><\/id>/<id><![CDATA[cyber monday deal 3]]><\/id>/m;
\ Q的效果结束于\ E或正则表达式的结尾。它不会使$
或@
字面值,但会使用文字插入任何正则表达式。