正则表达式不适用于包含 + 的输入字符串
现男友
阅读:199
2025-06-02 22:19:02
评论:0
我有以下代码:
$url = "http://www.example.com/url.html";
$content=Encode::encode_utf8(get $url);
$nameaux = Encode::encode_utf8($DBfield);
if($content =~ />$nameaux<\/a><\/td><td class="class1">(.*?)<\/td>/ ||
$content =~ />$nameaux<\/a><\/td><td class="class2">(.*?)<\/td>/ ||
$content =~ />$nameaux<\/a><\/td><td class="class3">(.*?)<\/td>/ ) {
... more code ...
}
除非 $DBfield 等于包含加号(例如 A+1)且存在于 $content 上的字符串,否则这段代码效果很好。
有人可以解释一下我该如何处理吗?
请您参考如下方法:
如果 $nameaux 可以包含正则表达式字符(如 +),您需要通过使用 \Q ... \E 将字段转义为正则表达式文字。
$content =~ />\Q$nameaux\E<\/a><\/td><td class="class1">(.*?)<\/td>/ ||
所以 + 只是一个加号,并不表示“一个或多个”,这就是您的正则表达式不匹配的原因。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



