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

时间:2010-05-18 10:59:30

标签: mysql regex

此正则表达式用于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%))';

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

1 个答案:

答案 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