MySQL REGEXP alnum匹配问题

时间:2015-04-02 13:57:18

标签: mysql regex

我有以下字符串 -

  

我知道当军队被击败时会发生什么样的事情。

此MySQL命令返回1.

select "I know what that’s like when an army is defeated." REGEXP '[^[:punct:] A-Za-z0-9]'

但是,当我使用'alnum'代替[A-Za-z0-9]时,它会返回0.

select "I know what that’s like when an army is defeated." REGEXP '[^[:punct:] [:alnum:]]'

有人可以解释原因吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

HEX(CONVERT(BINARY(CONVERT("’s" USING latin1)) USING utf8)) - > C3A2E282ACE284A273 - > ’s(当utf8时)

CONVERT(BINARY(CONVERT("’s" USING latin1)) USING utf8) - > ’s

所以你有that's一个有趣的撇号,可能来自Microsoft Word?此外,它是“双重编码”。

如果您的REGEXP试图找到8位代码进行进一步分析,请考虑:

HEX(col) RLIKE '^(..)*(0[012345678BCEF]|7F|[189ABCDEF].)'

然后,如果你想“修复”双重编码,see my blog。如果您需要帮助选择所需的部件,请告诉我。