我已将文本文件的内容存储在名为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
这是什么正则表达式?
答案 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.");
将找到两个第一行,但不是第三行。