perl语言中正则表达式锚位与单词锚位的区别
请问下锚位与单词锚位的区别/^fred$/和/\bfred\b/??/\bsearch\B/为什么不能匹配search,但是能匹配searched呢?小骆驼书中\B是只能...
请问下锚位与单词锚位的区别/^fred$/和/\bfred\b/??
/\bsearch\B/为什么不能匹配search,但是能匹配searched呢?
小骆驼书中\B是只能匹配\b不能匹配的位置,这是什么意思呢 展开
/\bsearch\B/为什么不能匹配search,但是能匹配searched呢?
小骆驼书中\B是只能匹配\b不能匹配的位置,这是什么意思呢 展开
2个回答
展开全部
/^...$/ 要搜索的是整个字串的开始和结束, 这字串可以是一片文章的长度, 多行, 当然也可以只是几个字.
\b 和 \B 是 word boundary 和非 word boundard 的意思. 那甚麼是 word boundary 呢 ? 就是这个字的後面是否出现非 word ( 即 \W 或 ^\w ) 字符.
" xyz" =~ \bxyz; # true
"xyz" =~ \bxyz; # false
"xyz" =~ /xyz\b; # false. 因为 z 之後就是 $, 字串的完结, 所以是 false, 你的例子中不能匹配 search 也是这个原因
perl 中的 regex, 大部份都以 \小写 来表达 "是" 的意思, 而以 \大写 来表达 "非" 的意思. 书中的说法只是说的比较哲学性地表违这个意思了. 当然 "是" 的相反就是 "非" 啦
\b 和 \B 是 word boundary 和非 word boundard 的意思. 那甚麼是 word boundary 呢 ? 就是这个字的後面是否出现非 word ( 即 \W 或 ^\w ) 字符.
" xyz" =~ \bxyz; # true
"xyz" =~ \bxyz; # false
"xyz" =~ /xyz\b; # false. 因为 z 之後就是 $, 字串的完结, 所以是 false, 你的例子中不能匹配 search 也是这个原因
perl 中的 regex, 大部份都以 \小写 来表达 "是" 的意思, 而以 \大写 来表达 "非" 的意思. 书中的说法只是说的比较哲学性地表违这个意思了. 当然 "是" 的相反就是 "非" 啦
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询