Ключевые слова Regex - PullRequest
1 голос
/ 31 мая 2009

Я пытаюсь использовать Regex в C # для поиска списка ключевых слов в куче текста. Однако я хочу быть очень конкретным в отношении того, какой «окружающий» текст может быть для чего-то, что можно считать ключевым словом.

Так, например, ключевое слово "привет" должно быть найдено в (привет), привет., Привет <, но не в hellothere. </p>

Моя главная проблема в том, что я НЕ ТРЕБУЮ разделителей, если ключевое слово - это первое слово или последнее слово, это нормально. Я думаю, что другой способ взглянуть на это состоит в том, что начало файла и конец файла должны быть приемлемыми разделителями.

Я новичок в Regex, поэтому я надеялся, что кто-нибудь может помочь мне понять схему правильно. Пока что у меня есть:

[ <(.]+?keyword[<(.]+?

где <, (,. - некоторые примеры разделителей, а ключевое слово - это, конечно, ключевое слово, которое я ищу. </p>

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 31 мая 2009

Вы можете использовать границу слова якорь:

\bkeyword\b

, который найдет ваше ключевое слово, только если оно не является частью большого слова.

0 голосов
/ 31 мая 2009

Вы захотите заглянуть в word boundary (\ b), чтобы избежать совпадения ключевых слов, которые появляются как часть другого слова (как в вашем примере с hellothere).

Вы также можете добавить совпадения в начале строки (^) и в конце строки ($), чтобы контролировать позицию, где могут появляться ключевые слова.

0 голосов
/ 31 мая 2009

Я думаю, вы хотите что-то вроде:

(^$|[ <(.])+?keyword($|[<(.]+?)

Символы ^ и $ символизируют начало и конец вводимого текста соответственно. (Если вы укажете параметр Multiline, он будет соответствовать началу / концу строки, а не тексту, но вам, вероятно, понадобится параметр Singleline.)

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