我正在尝试我认为是一个简单的正则表达式模式。
我有一个看起来像这样的文本文件:
胡说八道http://www.google.com。这里还有别的东西,呜呜呜。http://x.oddree.com/image1.jpg。还有一些文字……等等。 http://x.oddree.com/image2.jpg
我试图从那里获取的是任何以 http 开头并以 jpg 结尾的文本。不是完整的网址。只有那些以 .jpg 结尾的。
换句话说,我希望我的输出是:
http://x.oddree.com/image1.jpg http://x.oddree.com/image2.jpg
我的正则表达式是: "\b(http).*(jpg)\b" 它似乎有效。但是当与模式匹配一起使用时,我最终会得到从 http 的第一次出现到 jpg 的最后一次出现的所有内容。我知道我必须双重转义将 \b 更改为 \b,但它仍然无法按预期工作。
为此,我已经把头撞在墙上好几个小时了。:-)
这是一个代码片段:
if(file.exists())
{
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('n');
}
}
catch (IOException e) {
//TODO Write some error handling.
}
Pattern pattern = Pattern.compile(
"\\b(http).*(jpg)\\b"
);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
result.add(matcher.group());
}
my_text.setText(result.toString());
}