如何在MySQL 8.0.5+中的单词边界上使用REGEXP?

时间:2018-07-11 16:06:04

标签: mysql regex mysql-8.0

在使用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 |
+---------------------------------------------+

但是此选项不起作用。

2 个答案:

答案 0 :(得分:3)

首先,请注意REGEXP_REPLACE可以部分匹配字符串 ,并且在搜索词之前和之后都不需要.*

\字符应转义以定义文字反斜杠,因为\本身允许转义MySQL引擎的字符。参见此MySQL 8 documentation

  

注意

  由于MySQL在字符串中使用C转义语法(例如,\n代表换行符),因此您必须在 expr 中使用的所有\都加倍 pat 参数。

因此,您需要

REGEXP_LIKE("aaa abc ccc", "\\babc\\b")

答案 1 :(得分:0)

也有字边界:[[:<:]][[:>:]]