gpt4 book ai didi

两个单词里面有括号的MySQL单词边界

转载 作者:行者123 更新时间:2023-11-28 23:30:20 25 4
gpt4 key购买 nike

我可以在这个 REGEXP 中匹配单词 Burger单词边界 [[:<:]]Burger[[:>:]] .但是,我有另一个条目是 Burger (Cheese) 并且不能通过单词边界看到 [[:<:]]Burger (Cheese)[[:>:]] .我必须做什么才能在单词边界上允许两个单词和括号?

最佳答案

当然,WHERE ... REGEXP '[[:<:]]Burger (Cheese)[[:>:]]'不匹配 Burger (Cheese) .

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

然而,WHERE ... REGEXP '[[:<:]]Burger \\(Cheese\\)[[:>:]]'也不匹配,是什么让我们进入第二个问题。 [[:>:]匹配单词边界但 parenthesis is not a word character :

A word character is an alphanumeric character in the alnum class or an underscore (_).

您不再有 [[:>:] (Cheese) 处的单词边界字符串,因为单词以最后一个 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单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37520574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com