Regular expression in MySQL to exclude something that has specific word inside brackets
This regular expression is for a MySQL query.
I want to exclude the following row because it has something
inside the bracket:
bla bla bla bla bla bla (bla bla bla something)
However I want to include the following row, because it does not have something
inside the bracket:
bla bla bla (bla bla bla)
I tried this query but it didnt work.
SELECT * FROM table WHERE field NOT REGEXP '((%something%))';
I think this is wrong. I just did trial and error. I like to use a regular expression, but I never understand it completely. Are there any good tutorials/books/links f开发者_高级运维or learning the detail of regular expressions?
Try:
SELECT * FROM table WHERE field NOT REGEXP '\\([^\\)]*something.*\\)'
The regexp is:
\([^\)]*something.*\)
(but MySQL treats \ as a special character so we have to escape it as \).
That means:
\( - 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
精彩评论