Mysql текстовый экстракт с Regex - PullRequest
1 голос
/ 11 октября 2009

Я пытался извлечь текст из HTML-текста, хранящегося в БД.

Это пример:

<P style="FONT-SIZE: 13px; MARGIN-LEFT: 6px"><FONT color=#073b66><STRONG><A 
href="/generic.asp?page_id=p00497">Practice Exams</A> - </STRONG><FONT 
color=#000000>ours are the most realistic exam simulations, and the best way to 
prepare for your exams. Get detailed correct and incorrect answers and 
explanations. Free Flash Cards are included.</FONT></FONT> </P>

Если я ищу "универсальный", это регулярное выражение должно найти его, если этот текст находится над тегом html.

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

Ответы [ 3 ]

2 голосов
/ 11 октября 2009

Следующая строка регулярного выражения MySQL будет соответствовать всем тегам html, так что вы можете удалить их

"<" +       -- Match the character “<” literally
"[^>]" +    -- Match any character that is NOT a “>”
   "*" +       -- Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
">"         -- Match the character “>” literally

OR

Я знаю, что это не дает прямого ответа на ваш вопрос, но если у вас есть доступ к языкам сценариев, они обычно имеют встроенные функции для удаления HTML-тегов из текста.

например. в PHP вы можете сделать это ...

$htmltext = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
$plaintext = strip_tags($text);

// or use regex...
$result = preg_replace('/<[^>]*>/i', '', $text);

http://php.net/manual/en/function.strip-tags.php

0 голосов
/ 11 октября 2009

Я бы предложил добавить еще один столбец в БД с текстовой копией столбца html и использовать этот столбец для полнотекстовых запросов. Регулярные выражения - неправильный инструмент для этого.

Для большого количества текстов вы также можете рассмотреть Sphinx http://www.sphinxsearch.com, который имеет встроенную опцию игнорирования HTML при поиске.

0 голосов
/ 11 октября 2009

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

Если вы публикуете сообщение на каком языке вы работаете, возможно, я или кто-то другой может дать рекомендацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...