MySQL单词边界,两个单词内有括号

MySQL单词边界,两个单词内有括号,mysql,Mysql,我可以在这个REGEXP单词边界[[::]]中匹配单词Burger。但是,我有另一个条目,它是汉堡(奶酪),无法通过单词边界[[::]]看到。我该怎么做才能在单词边界上添加两个单词和括号?当然,其中。。。REGEXP“[[::]]”与汉堡(奶酪)不匹配 第一个问题是,您甚至没有寻找括号(和)在正则表达式中有特殊的含义,它们用于定义组,因此需要转义。但是,regexp(反斜杠)中的转义字符与字符串中的转义字符相同,因为您的regexp位于需要转义反斜杠的字符串中:\\() 但是,WHERE…REG

我可以在这个
REGEXP
单词边界
[[::]]
中匹配单词Burger。但是,我有另一个条目,它是汉堡(奶酪),无法通过单词边界
[[::]]
看到。我该怎么做才能在单词边界上添加两个单词和括号?

当然,
其中。。。REGEXP“[[::]]”
与汉堡(奶酪)不匹配

第一个问题是,您甚至没有寻找括号
在正则表达式中有特殊的含义,它们用于定义组,因此需要转义。但是,regexp(反斜杠)中的转义字符与字符串中的转义字符相同,因为您的regexp位于需要转义反斜杠的字符串中:
\\(

但是,
WHERE…REGEXP'[[:::]]'
也不匹配,这就引出了第二个问题。
[[:>:]
匹配单词边界,但:

单词字符是
alnum
类中的字母数字字符或下划线(

(Cheese)
字符串的末尾不再有
[[[:>:]
单词边界,因为单词以last
e
结尾

您必须重新考虑您的逻辑。如果它符合您的规格,您可以在表达式末尾添加右括号,例如:

mysql> SELECT *
    -> FROM (
    ->  SELECT 'Burger' AS foo
    ->  UNION ALL SELECT 'Burger (Cheese)'
    ->  UNION ALL SELECT 'Yet Another Burger'
    ->  UNION ALL SELECT 'Burger Extras'
    ->  UNION ALL SELECT 'Coffee'
    -> ) x
    -> WHERE foo REGEXP '[[:<:]]Burger \\(Cheese([[:>:]]|\\))';
+-----------------+
| foo             |
+-----------------+
| Burger (Cheese) |
+-----------------+
1 row in set (0.00 sec)
mysql>SELECT*
->从(
->选择“汉堡”作为食物
->联合所有人选择“汉堡(奶酪)”
->联合所有人选择“又一个汉堡”
->联合所有选择“汉堡额外服务”
->联合所有人选择“咖啡”
->)x
->其中foo REGEXP“[[::]\\)”;
+-----------------+
|福|
+-----------------+
|汉堡(奶酪)|
+-----------------+
一行一组(0.00秒)

我不知道你的笑脸在单词旁边是什么意思,但对我来说似乎很有用……你没有显示任何代码,但括号在正则表达式中有特殊的含义,所以是的,你必须对它们进行转义才能搜索到字面意义。@阿尔瓦罗冈萨雷斯-这就是我在MySQL上使用的代码,只需添加
REGEXP
.Question被标记为PHP。由于您无法在PHP中注入原始SQL(其他语言提供此功能,而非PHP),我假设您使用的是PHP字符串(其中反斜杠也是转义字符)。(如果根本不涉及PHP,则应删除此标记。)在任何情况下,如果您确信您的代码是正确的,因此不需要共享,那么您的问题到底是什么?我更新了我的问题。