我有以下字符串-
I know what that’s like when an army is defeated.
此 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:]]'
谁能解释一下原因吗?
谢谢!
最佳答案
HEX(CONVERT(BINARY(CONVERT("?s"USING latin1)) USING utf8))
-> C3A2E282ACE284A273
-> 的
(当utf8时)
CONVERT(BINARY(CONVERT("’s"USING latin1)) USING utf8)
-> 的
那么您的 that's
带有一个有趣的撇号,可能来自 Microsoft Word?此外,它是“双重编码”的。
如果您的 REGEXP 尝试查找 8 位代码以进行进一步分析,请考虑:
HEX(col) RLIKE '^(..)*(0[012345678BCEF]|7F|[189ABCDEF].)'
然后,如果您想“修复”双重编码,请使用 see my blog 。如果您需要帮助挑选您需要的零件,请告诉我。
关于MySQL REGEXP alnum 匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414777/