-2

我已将文本文件的内容存储在一个名为的字符串Str中,如下所示:

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

什么是正则表达式?

4

3 回答 3

0

你在这里并不需要单词边界,你可以让它变得简单:

"(Cat.*?)/n"

然后从match.group(1)

于 2013-02-28T20:03:50.400 回答
0

假设“句子”(这是一个非常广泛的术语,可以用不同的方式定义)意味着直到下一个句号(.),您可以尝试使用

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

.* 0个或多个任意字符

\\.期间字符

于 2013-02-28T19:54:31.643 回答
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.");

会找到前两行,但不会找到第三行。

于 2013-02-28T20:09:21.530 回答