2016-05-26 2 views
-4

Это пример строкиЯ хочу найти все слова с помощью java regex, который начинается с «#» и заканчивается пробелом или «.».

hi #myname, you got #amount 

Я хочу, чтобы найти все слова, используя Java regx, , который начинается с # и заканчивается с пространством или . например #myname, #amount

Я попытался следующие Regex, но это не сработает.

String regx = "^#(\\s+)"; 
+0

Пожалуйста, посетите [помощь] и читать [просить]. Предполагается, что вы сами попытаетесь решить проблему и зададите вопросы только после того, как попробуете. Покажите нам, что вы пробовали. –

+1

Я не вижу места или точки после суммы – rock321987

+2

@AnoopLL - Постарайтесь быть лучше, спасибо. –

ответ

2

Это один должен быть путь:

#(\w+)(?:[, .]|$) 
  • # матчи # буквально
  • \w это слово по крайней мере одну букву
  • (?:) не является отлов группой
  • [, .]|$ это набор символов, включая заканчивающегося конец строки $

Для получения дополнительной информации ознакомьтесь с Regex101.

В Java не забудьте выйти с двойной \\:

String str = "hi #myname, you got #amount"; 
Matcher m = Pattern.compile("#(\\w+)(?:[, .]|$)").matcher(str); 
while (m.find()) { 
    ... 
} 
+0

, я использовал «\\ $ (\\ w +)», и это будет моей целью. спасибо большое человек – jackSparrow

+0

Вы не имеете в виду '#' вместо '$'? Да, он работает, однако он соответствует словам со всем диапазоном символов, заканчивающихся. –

+0

О, извините, это «\\ # (\\ w +) – jackSparrow

0

Это регулярное выражение: "(#\w*?[ .])"

+0

Yepp. Заменив '. *?' На '\ w *?' –

1
String str = "hi #myname, you got #amount"; 
Matcher m = Pattern.compile("\\#(\\w+)").matcher(str); 
Смежные вопросы