在使用ICU-REGEXP在单词边界上执行搜索的MySQL(8.0.5+)中,它不起作用。 据我了解,应该是
$ mysql -e 'SELECT REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*")'
+---------------------------------------------+
| REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*") |
+---------------------------------------------+
| 0 |
+---------------------------------------------+
但是此选项不起作用。
答案 0 :(得分:3)
首先,请注意REGEXP_REPLACE
可以部分匹配字符串 ,并且在搜索词之前和之后都不需要.*
。
\
字符应转义以定义文字反斜杠,因为\
本身允许转义MySQL引擎的字符。参见此MySQL 8 documentation:
注意
由于MySQL在字符串中使用C转义语法(例如,\n
代表换行符),因此您必须在 expr 中使用的所有\
都加倍和 pat 参数。
因此,您需要
REGEXP_LIKE("aaa abc ccc", "\\babc\\b")
答案 1 :(得分:0)
也有字边界:[[:<:]]
和[[:>:]]