Регулярное выражение в MySQL, чтобы исключить что-то, у которого есть определенное слово в скобках - PullRequest
2 голосов
/ 18 мая 2010

Это регулярное выражение для запроса 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 Ответ

3 голосов
/ 18 мая 2010

Попробуйте:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...