我正在使用单词边界来匹配整个英语单词。如果我匹配的字符串是纯英文的话,它可以正常工作。
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点...
答案 0 :(得分:0)
你可以使用转义的'u'和unicode hex(例如\u0041
是'A')在大多数语言中使用regex unicode字符。然后,您可以匹配unicode范围。这是所有大写的基本拉丁字母,即A-Z:
[\u0041-\u005A]
也要仔细检查你的编码。
匹配'a word哈哈抓不到我吧 a'
的示例,包括空格:
.*[\u0041-\u0054 \u0061-\u007a \u0020].*
在ascii中,这将是:
.*[A-Za-z ].*