2013-02-28 18 views
-2

Я хранится содержимое текстового файла в строке под названием Str, которая выглядит следующим образом:Как найти группу слов (граница слов) с помощью Regex

Str = "Cat is an animal\n" + 
     "Cat is small\n" + 
     "Cat is a pet\n"; 

я написал это код для поиска слова Cat:

Pattern pattern = Pattern.compile("(\\bCat\\b)"); 
Matcher match = pattern.matcher(Str); 

while (match.find()) { 
    String tempStr = "I found " + match.group() + "\n"; 
} 

выше производит этот выход:

I found Cat 
I found Cat 
I found Cat 

Вот мой вопрос. Как найти целое предложение, используя ключевое слово Cat таким образом, что на выходе будет:

I found Cat is an animal 
I found Cat is small 
I found Cat is a pet 

Что такое регулярное выражение для этого?

+0

Что вы пробовали? Вы не указали никаких попыток/предложений для поиска предложения. Также я бы сказал, что на этом вопросе не хватает деталей/контекста. –

+0

Да, я нашел решение для своей проблемы. Я попробовал простой регкс Влад Л, предложив, и он вернул результат, который соответствовал моему ожиданию. Благодаря! –

ответ

0

вы на самом деле не нужны границы слов здесь, вы можете сделать это просто:

"(Cat.*?)/n" 

, а затем получить результат от match.group(1)

+0

Это хорошо работает для меня. Спасибо всем здесь за помощь :). –

0

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

Pattern pattern = Pattern.compile("(\\bCat\\b.*\\.)"); 

.* 0 или более любых характер

\\. Период характер

+0

Я сделал ошибку в моем вопросе. Каждое предложение не заканчивается периодом. –

+0

Итак, теперь я понимаю, что каждое предложение заканчивается символом новой строки ('\ n'), это правильно? Вы должны уточнить это в своем вопросе. – m0skit0

0

Вы хотите использовать границу слова, чтобы избежать подходящих слов, как Catwoman? Если так, ты почти уже там.

Pattern pattern = Pattern.compile(".*\\bCat\\b[^.]*\\."); 
Matcher match = pattern.matcher("a super Cat too cute to be true.\n" + 
           "and an other Cat.\n" + 
           "but not thatCat nor Catwoman no no no."); 

Находят две первые строки, но не третью.