正则表达式在unicode上失败

时间:2011-03-15 08:55:17

标签: php regex unicode

我正在尝试使用php和reg exp。

在文本中找到字符串“C#”

我正在使用

\bc\x{0023}\b

但根本不起作用。

\bc\x{0023} 

有效,但这对我来说不是解决方案

有任何线索吗?

1 个答案:

答案 0 :(得分:3)

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

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

也许您应该使用您想要的角色类更清晰地定义。例如/\bc#(?![a-z])/i(即未跟随a-z字符范围的C#)