Как найти целое слово в строке в Java - PullRequest
24 голосов
/ 23 февраля 2011

У меня есть строка, которую я должен проанализировать по разным ключевым словам. Например, у меня есть строка:

«Я приду и встречу тебя в 123 лесах»

И мои ключевые слова

'' 123woods 'лес'

Я должен сообщать, когда у меня есть матч и где. Многократные случаи также должны быть учтены. Однако, для этого я должен получить совпадение только на 123 лесах, а не на лесах. Это исключает использование метода String.contains (). Кроме того, я должен иметь возможность иметь список / набор ключевых слов и одновременно проверять их наличие. В этом примере, если у меня есть «123woods» и «come», я должен получить два вхождения. Выполнение метода должно быть несколько быстрым для больших текстов.

Моя идея - использовать StringTokenizer, но я не уверен, что он будет работать хорошо. Есть предложения?

Ответы [ 13 ]

0 голосов
/ 31 августа 2013

Чтобы сопоставить «123woods» вместо «woods», используйте атомарную группировку в регулярном выражении.Следует отметить, что в строке, совпадающей только с «123woods», она будет соответствовать первым «123woods» и завершится, вместо того чтобы искать эту же строку дальше.

\b(?>123woods|woods)\b

она ищет 123wood как основнойпоиск, как только он найден, он завершает поиск.

0 голосов
/ 23 февраля 2011

Вы также можете использовать регулярное выражение с флагом \ b (граница целого слова).

0 голосов
/ 23 февраля 2011

Вы можете использовать регулярные выражения. Используйте методы Matcher и Pattern, чтобы получить желаемый результат

...