Поиск слова с использованием регулярного выражения - PullRequest
2 голосов
/ 20 февраля 2012

Как искать слово в точном соответствии, например, как искать слово 'leak', но результаты поиска не должны включать такие слова, как leaked или leaks и т. Д.

Помощь в Javascript и MySQL приветствуется.

Ответы [ 4 ]

5 голосов
/ 20 февраля 2012

По сути, вам нужно искать границы слов. Поэтому не думайте искать слово leak, а искать слово $leak#, где $ - это воображаемый символ, который находится в начале каждого слова, а # - это воображаемый символ в конце. каждого слова (не стандартное соглашение, просто предположите это для этого примера). Слова разграничены, скажем, пробелами. Итак, leaked и leaks - это $leaked# и $leaks#. Таким образом, единственная совпадающая часть - это $leak, а не $leak#.

Для этого в MySQL условие будет:

REGEXP '[[:<:]]leak[[:>:]]';

Здесь [[:<:]] - это граница слова в начале слова , а [[:>:]] - граница слова в конце слова .

Для JavaScript , запрос будет:

/\bleak\b/

Здесь последовательность \b представляет границу слова (в javascript нет различия между границами начального слова и конечного слова). Он будет работать не только для пробелов, но даже для знаков препинания, например:

.leak
,leak
;leak

будет соответствовать /\bleak\b/, но aleak не будет. (Хотя я не уверен насчет MySQL)

1 голос
/ 20 февраля 2012

регулярное выражение будет

/\bleak\b/

Использование в JavaScript

var patt1=/\bleak\b/i;
patt1.test(your_string); // Returns true/false

Для MySQL ( Я не знал, что в нем есть поддержка регулярных выражений , спасибо Рохану Прабху):

* * 1010
0 голосов
/ 20 февраля 2012
\bleak\b

Я тестировал его на следующих входах:

  1. утечка или утечка. "утечки" и т. д.
  2. утечка, привет
  3. найти: утечка-привет
  4. Привет, мир! Утечка
0 голосов
/ 20 февраля 2012

Это будет соответствовать словам, которые не начинаются с утечки *

(?!leak\w*)\b\w+\b

Совпадения, выделенные жирным шрифтом:

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