我有以下字符串 -
我知道当军队被击败时会发生什么样的事情。
此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:]]'
有人可以解释原因吗?
谢谢!
答案 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。如果您需要帮助选择所需的部件,请告诉我。