0
我想要什麼,我認爲是一個簡單的正則表達式模式。模式匹配每個出現的第一個和第三個單詞(與一切之間)
我有一個文本文件,它看起來是這樣的:
等等等等等等http://www.google.com。這裏還有別的東西,等等吧。 http://x.oddree.com/image1.jpg。一些更多的文字......等等等等。 http://x.oddree.com/image2.jpg
我試圖抓住離開那裏,就是以http開頭並以JPG結尾的任何文本。不是完整的網址。只有以.jpg結尾的那些。
換句話說,我希望我的輸出是:
http://x.oddree.com/image1.jpghttp://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());
}
這工作!所以它是\ S與雙重逃脫,然後一個+?爲'直通'語法。這與標準正則表達式相差甚遠。我將不得不閱讀更多關於模式匹配的文檔。 :-)謝謝你的回答! – RayHaque