2012-06-21 1 views
0

Следуя этой question and answer, я до сих пор немного проблемы в результате я получаю,MySQL REGEXP соответствует границы слова только, но исключая матч в HTML-теги

Например,

REGEXP '>[^<]*lau[[:>:]]' будет соответствовать 'Lau 'только, но не' laurence ', который является правильным.

REGEXP '>[^<]*men[[:>:]]' будет соответствовать «расширения возможностей» и «женщин», которые не, что я после.

REGEXP '(|>|$)home(|<|$)' будет соответствовать 'home' only but not 'дом! ', который он должен.

Как можно правильно их правильно подобрать?

Например,

Home - match 
HOME - match 
welcome home! - match 
home is far! - match 
hometown - not match 
xxhomexx - not match 
<a href="home.html">Hello</a> - not match 
<p class="home">a box</p> - not match 

Он должен не матч любое вхождение в HTML-теги. родного города - не соответствуют

ответ

2

как о REGEXP '> [^ <] * [[: <:]] дом [[:>:]]'?

Кроме того, меня действительно интересует производительность вашего решения ... Почему бы вам не добавить еще один столбец в вашей таблице, который содержит текст, содержащий теги html. Затем вы сможете эффективно использовать полный текстовый поиск, вместо того чтобы иметь сложное регулярное выражение.

+0

'Почему у вас нет другой колонки в вашей таблице, содержащей текст, содержащий теги html.« Я никогда не думал об этом ... но «REGEXP»> [^ <] * [[: <:]]home[[:>: ]] 'похоже, работает нормально. Благодарю. – laukok

Смежные вопросы