正则表达式边界和字符串'c#'

时间:2013-02-11 14:16:55

标签: php regex

只是好奇才知道。我注意到我的正则表达式与'\ b'

一起使用时找不到字符串'C#'
if (preg_match('@\bC#\b@i', $userSkills)) {...

但是,如果我删除'\ b',它会设法找到字符串。

有人知道这里可能出现什么问题吗?

查找匹配项的字符串:

Unified Communications Design Specialist ~$~ Windows 95 or 98 ~$~ Windows 2000 
or XP ~$~ Linux ~$~ Visual Basic ~$~ ASP Net ~$~ C# ~$~ Contact Center Design 
Specialist ~$~ Internet Programming ~$~ Object oriented programming ~$~ 
Databases ~$~ Unified Commucations ~$~ Contact Center Solutions ~$~
Junior Developer ~$~ Solutions Engineer 

2 个答案:

答案 0 :(得分:2)

对于字边界,escape sequence\b而非/b

if (preg_match('@\bC#\b@i', $userSkills)) {...

答案 1 :(得分:1)

这是因为#不是单词字符。我用 | 标记了“C#”字符串中的单词边界:

|ASP| |Net| ~$~ |C|# ~$~ |Contact|

您看,在“#”和“”之间没有边界,因此\b不匹配。