MySQL REGEXP соответствует только граничному слову, но исключает совпадение в HTML-тегах

0

После этого вопроса у меня все еще есть небольшая проблема в результате, который я получаю,

Например,

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

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

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

Как правильно их сопоставить?

Например,

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. родной город - не соответствует

Теги:
word-boundary

1 ответ

2
Лучший ответ

как насчет   REGEXP ' > [^ <] * [[: <:]] home [[: > :]]'?

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

  • 0
    Why don't you have another column in your table, which contains the text having the html tags stripped. Я никогда не думал об этом ... но REGEXP '>[^<]*[[:<:]]home[[:>:]] кажется, работает нормально. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню