MySQL 中的正则表达式用于排除括号内具有特定单词的内容

bbn*_*bnn 3 regex mysql

该正则表达式用于 MySQL 查询。

我想排除以下行,因为它位于something括号内:

bla bla bla bla bla bla (bla bla bla something)
Run Code Online (Sandbox Code Playgroud)

但是我想包括以下行,因为它没有something在括号内:

bla bla bla (bla bla bla)
Run Code Online (Sandbox Code Playgroud)

我尝试了这个查询,但没有成功。

SELECT * FROM table WHERE field NOT REGEXP '((%something%))';
Run Code Online (Sandbox Code Playgroud)

我认为这是错误的。我只是做了尝试和错误。我喜欢使用正则表达式,但我从来没有完全理解它。有没有好的教程/书籍/链接来学习正则表达式的细节?

psm*_*ars 5

尝试:

SELECT * FROM table WHERE field NOT REGEXP '\\([^\\)]*something.*\\)'
Run Code Online (Sandbox Code Playgroud)

正则表达式是:

\([^\)]*something.*\)
Run Code Online (Sandbox Code Playgroud)

(但是 MySQL 将 \ 视为特殊字符,因此我们必须将其转义为 \)。

这意味着:

\(         - an open-parentheses character ("(" has a special meaning
             in regular expressions, so we have to escape it with "\")
[^\)]      - any character except a ")"...
*          - ... repeated any number of times
something  - the string to match
.          - any character
*          - ... repeated any number of times
\)         - a ")" character
Run Code Online (Sandbox Code Playgroud)