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