2016-04-13 2 views
0

Я пытаюсь выбрать определенные строки из моей базы данных с помощью regexp, но по какой-то причине он не работает. Что я делаю неправильно, и как я могу это исправить?Выбор строк из mysql с помощью regexp

select response from allData where response regexp '\*([a-zA-Z]+)+\*' 

Это, предполагают, чтобы выбрать строки, как:

* пинает вас *

^--- С дополнительным пространством после слова, и перед звездочкой. Но это не работает. Как это исправить?

+1

Вы, вероятно, нужно бежать '*' –

+0

@PaulSpiegel Он пытается что с '\ *'. – Barmar

+1

Используйте двойную обратную косую черту. Кроме того, если вам нужно убедиться, что полная строка согласована, используйте привязки: ''^\\ * ([a-zA-Z] +) + \\ * $ '' –

ответ

4

Вы не избегаете * правильно. Обратная косая черта - символ escape-последовательности строки и регулярного выражения. Чтобы механизм регулярного выражения видел обратную косую черту, которая ускользает от *, вам нужно избежать обратной косой черты, чтобы получить ее через синтаксический анализатор строк.

select response from allData where response regexp '\\*([a-zA-Z]+)+\\*'