大哥救命

dragontaotao 2003-08-20 11:46:48
如何在perl里对特殊字符精确匹配??
比如我给 
$morsel = "1[C.S]"
$inmembername = "1[C.S]"
但是
$morsel=~/$inmembername/
返回是FALSE啊!!!
如何才能返回TRUE???
...全文
48 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leebx 2003-08-28
  • 打赏
  • 举报
回复
说明一下:$morsel=~/$inmembername/
/$inmenmbername/中的$表示是与”inmembername“字符串开头的字符串匹配,如果要表示变量就要转义 /\$inmembername/。
即使这样也是返回FALSE,因为$inmembername = "1[C.S]"
所以表达式$morsel=~/\$inmembername/ 就成了:$morsel=~/1[C.S]/,这是匹配1后面接C或.或S的字符串,即1C,1.,1S,而在$morsel中不含这样的字符串。
scalps 2003-08-25
  • 打赏
  • 举报
回复

其实是你的正则表达式有问题, 这样写就好了:

$morsel = "1[C.S]";
$inmembername = "1\\[C\\.S\\]";
if($morsel =~ /$inmembername/){
print "true";
}else{
print "false";
}

因为[ . ]都是正则表达式里的专有字符,要转义使用.
PowerHorse 2003-08-21
  • 打赏
  • 举报
回复
$inmembername = quotemeta($inmembername);

$morsel =~ /$inmembername/;

这回应该是 TRUE 了。

2,204

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧