не удается найти совпадение с образцом при поиске символов в кавычках - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть данные в столбце MySQL DB:

<sxyz lang="en" class="multilang">Encyclopedia</sxyz>

Мне нужно сделать так, как

Encyclopedia</sxyz>

отрубая первую часть. Теперь у меня могут быть пробелы между ними, и я хочу объяснить это.

при условии, что myfielddata - строка выше ....

Я пробовал:

select replace(myfielddata,'<sxyz[[:space:]]+lang="[a-zA-Z0-9_-]+"[[:space:]]+class="multilang">','')   from mytable

и это не работает.

У меня событие спарено до минимума, чтобы соответствовать "en" только как

select replace(myfielddata,'<sxyz lang="[a-zA-Z0-9_-]+" class="multilang">','')   from mytable

Это все еще не работает.

Единственное, что сработает, если я точно совпаду со строкой

select replace(myfielddata,'<sxyz lang="en" class="multilang">','')   from mytable

но это не учитывает лишние пробелы, которые могут появляться между ними.

Помогите, пожалуйста, гуру RegEx.

A.

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

MySQL не имеет никаких функций замены на основе регулярных выражений, только сопоставление на основе регулярных выражений , в частности, replace только замена буквенных строк.

Вам придется проделать трудный путь с locate и substr (или чем-то подобным):

mysql> select substr('<sxyz lang="en" class="multilang">Encyclopedia</sxyz>' from locate('>', '<sxyz lang="en" class="multilang">Encyclopedia</sxyz>') + 1) as truncated;
+---------------------+
| truncated           |
+---------------------+
| Encyclopedia</sxyz> |
+---------------------+

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

0 голосов
/ 13 сентября 2011

Попробуйте это

select replace(myfielddata,'<sxyz.*"multilang">','')

или

select replace(myfielddata,'^<sxyz.*"multilang">$','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...