如何使用正则表达式找到一组单词(单词边界)

时间:2013-02-28 19:51:33

标签: java regex

我已将文本文件的内容存储在名为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

这是什么正则表达式?

3 个答案:

答案 0 :(得分:0)

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

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

.* 0个或更多任何角色

\\.句点字符

答案 1 :(得分:0)

这里你真的不需要单词边界,你可以简单一点:

"(Cat.*?)/n"

然后从match.group(1)

获取结果

答案 2 :(得分: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.");

将找到两个第一行,但不是第三行。