此正则表达式用于MySQL查询。
我想排除以下行,因为它在括号内有something
:
bla bla bla bla bla bla (bla bla bla something)
但是我想要包含以下行,因为它在括号内没有something
:
bla bla bla (bla bla bla)
我尝试了这个查询,但它没有用。
SELECT * FROM table WHERE field NOT REGEXP '((%something%))';
我认为这是错误的。我只是做了反复试验。我喜欢使用正则表达式,但我完全不理解它。是否有任何好的教程/书籍/链接来学习正则表达式的细节?
答案 0 :(得分:3)
尝试:
SELECT * FROM table WHERE field NOT REGEXP '\\([^\\)]*something.*\\)'
正则表达式是:
\([^\)]*something.*\)
(但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