+ -
当前位置:首页 → 问答吧 → 关键词中有+号怎么模式匹配

关键词中有+号怎么模式匹配

时间:2011-06-17

来源:互联网

本帖最后由 白水 于 2011-06-17 14:00 编辑

$a="C++";
$b="123";
if($b=~/$a/){print"ok";}

因为$a中有+号,就出错了,怎么办?怎么搜索匹配这个关键词?
还有,尽量不要修改关键词本身,因为该变量后面还要使用

作者: 白水   发布时间: 2011-06-17

if ($b =~ /\Q$a\E/) {...}

作者: zhlong8   发布时间: 2011-06-17

本帖最后由 白水 于 2011-06-17 14:57 编辑

谢谢楼上,这样写倒是不报错了,可是正常的匹配都匹配不上了呢
$a="C++|2";
$b="12C++3";
if ($b =~ /\Q$a\E/) {
print"ok";
}
结果应该有个C++,和2 能匹配上,但是实际不能了

我的本意是让+作为普通的字符,而不是有特殊含义的运算符号

作者: 白水   发布时间: 2011-06-17



QUOTE:
谢谢楼上,这样写倒是不报错了,可是正常的匹配都匹配不上了呢
$a="C++|2";
$b="12C++3";
if ($b =~ /\Q ...
白水 发表于 2011-06-17 14:53




    你要的是人工智能吧?既要 + 保持原意又要 | 做 RE 元字符解释,还不想付任何代价

作者: zhlong8   发布时间: 2011-06-17

这样好了....
$a =~ s/\+/\\+/g;

作者: jason680   发布时间: 2011-06-17