在mysql 8.0.5+中,如何将regexp与regex转义(如word boundary)结合使用?

gopyfrb3  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(359)

在mysql(8.0.5+)中,它不能使用icu regexp在单词边界上执行搜索。据我所知应该是洛杉矶

$ mysql -e 'SELECT REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*")'
+---------------------------------------------+
| REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*") |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+

但这个选项不起作用。

ppcbkaq5

ppcbkaq51#

首先,请注意 REGEXP_REPLACE 可以部分匹配字符串,而不需要 .* 搜索词前后。
这个 \ char应该转义以定义一个文本反斜杠,因为 \ 它本身允许mysql引擎转义字符。请参阅mysql 8文档:
笔记
因为mysql在字符串中使用c转义语法(例如, \n 要表示换行符),必须将任何 \ 在expr和pat参数中使用的。
因此,你需要

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

相关问题