【发布时间】:2021-12-31 14:48:35
【问题描述】:
我尝试在 MySQL 中将关键字与REGEXP 匹配如下:
-- Match "fitt*", the asterisk "*" is expected to be matched as-is
> select 'aaaa fitt* bbb' regexp '[[:<:]]fitt\*[[:>:]]'; -- return 1, ok
> select 'aaaa fitttttt* bbb' regexp '[[:<:]]fitt\*[[:>:]]'; -- return 1 as well, but should return 0
> select 'aaaa fitt* bbb' regexp '[[:<:]]fitt\\*[[:>:]]'; -- return 0, failed
如何转义星号 (*) 以完全匹配字符 *?
【问题讨论】:
-
问题不在于星号,而在于
[[:>:]]。那只匹配单词边界,但*和空格之间没有单词边界,因为*不是单词字符。 -
@Barmar 谢谢。但是如何将
fitt*这个词与REGEXP匹配呢? -
我根据@Barmar 和我自己之间的辩论更改了标题。