如何识别汉字混合的全英文单词?

时间:2011-05-26 15:48:43

标签: mysql regex

我正在使用单词边界来匹配整个英语单词。如果我匹配的字符串是纯英文的话,它可以正常工作。

ex:SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]' -> 1

但如果字符串包含任何中文文字,

ex:SELECT 'a word哈哈抓不到我吧 a' REGEXP '[[:<:]]word[[:>:]]' -> 0

如何让我的查询更加智能,以便用中文单词来隐藏英文单词?

我在想REGEXP '[[:<:]]word[[:>:]] | [Chinese]word[[:>:]] | [[:<:]]word[Chinese] | [Chinese]word[Chinese]'但我不知道如何在mysql regexp中使用Unicode点...

1 个答案:

答案 0 :(得分:0)

你可以使用转义的'u'和unicode hex(例如\u0041是'A')在大多数语言中使用regex unicode字符。然后,您可以匹配unicode范围。这是所有大写的基本拉丁字母,即A-Z:

[\u0041-\u005A]

Good resource

也要仔细检查你的编码。

匹配'a word哈哈抓不到我吧 a'的示例,包括空格:

.*[\u0041-\u0054 \u0061-\u007a \u0020].*

在ascii中,这将是:

.*[A-Za-z ].*