我有以下代码:
$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>/ ||
所以+只是一个加号而不是"一个或多个",这就是你的正则表达式不匹配的原因.
| 归档时间: | 
 | 
| 查看次数: | 35 次 | 
| 最近记录: |