2011-03-15 113 views
0

我试图在使用php和reg exp的文本中找到字符串“C#”。unicode上的正则表达式失败

我使用

\bc\x{0023}\b 

但并不在所有的工作。

\bc\x{0023} 

的作品,但是这不是我

任何线索的解决方案?

+0

unicode工作但\ unicode后面的\ b不 – 2011-03-15 09:09:38

回答

3

这是因为转义序列\b意味着一个字边界。 Word根据PHP手册定义为: “”字“字符是任何字母或数字或下划线字符,即任何可以是Perl”字“的一部分的字符。”“。

单词边界表示单词和非单词之间的边界。换句话说,作为单词字符的人物与人物之间的关系不是单词人物。问题是#不是一个单词字符。因此,除非#后跟一个单词字符,否则#\b将永远不匹配。

也许你应该更清楚地使用字符类来定义你想要的。例如/\bc#(?![a-z])/i(即C#没有跟随az字符范围)

+0

我在使用这个表达式之前,我意识到它失败了#,我用例如\ bjava \ b找到java,java和java但不是javabean – 2011-03-15 09:09:06

+0

对不起,我误解了你的解决方案,它工作正常。 – 2011-03-15 09:16:05