2012-10-15 65 views
1

我正在從事一項工作,我需要通過網站搜索並提取轉換率。如何捕獲Java中正則表達式匹配的文本?

如果我能夠簡單地匹配率,這將很容易捕獲和提取,但我需要能夠點擊更新按鈕,並讓程序搜索更新的轉換率,所以我無法只需硬編碼匹配搜索。

有沒有一種方法可以匹配比率前面的文本並捕獲比賽之後的所有文本?

如果還有更好的方法來做到這一點,我也樂於接受建議。我只需要幫助就知道如何從網站上獲得利率,當我不確切知道費率會是什麼。我只知道費率的格式以及費率在網站內的位置。

這是我到目前爲止有:

String regex = "(?<=EUR'>)\\d+(?:\\.\\d*)?(?=<)"; 

Pattern pattern = Pattern.compile(regex); 
Matcher match = pattern.matcher(?); 

while (match.find()) { 
    System.out.println("Found a match: " + match.group(1).toString()); 
    System.out.println("Start position: " + match.start(1)); 
    System.out.println("End position: " + match.end(1)); 
} 

我想我明白如何設置的模式,但我不能確定什麼,我應該把爲匹配字符串,如果我只知道是什麼開始和結束將會和沒有終點......

的是什麼,我需要搶下面是一個例子

<td class='rtRates'><a href='/graph/?from=USD&amp;to=EUR'>0.772000</a></td> 

我需要抓住這一行中最高的訂單,但它會不斷一定要改變

+0

'(。*?)match-expression(。*?)'?(如果這不是你想要的,也許你應該*通過舉例來說明你的帖子*?) –

+2

舉一些例子,看看費率如何。你不可能期望人們猜測你想做什麼。 –

回答

0

不要使用正則表達式來解析html,否則一個快速龍獸會來吃你。使用jsoup之類的東西以及<td>中類別rtRates<a>元素的查詢值。

+0

哈,如果我有選擇我不會,但它是這樣做的這項任務... – user1746105

+0

@ user1746105:你說你是開放的建議:)反正,我真的不明白,什麼是不斷變化,你給與什麼,你需要匹配? –

0

我不確定你的問題是什麼,因爲你的表情符合你的期望(我認爲)。 See it on Regexr

如果你想成爲什麼的部分看起來像標籤之間更加靈活,你可以使用這個:

(?<=EUR'>)[^<]* 

[^<]是negatied字符類。它將匹配任何字符,但<。然後,您還可以刪除前瞻斷言。

See it on Regexr

0

你就不能使用?

EUR'>(\d+(?:\.\d+)?)< 

率在組#1,因爲你已經在使用group(1)提取它這是方便拍攝。 ;)但嚴重的是,在你的正則表達式中沒有捕獲組,所以在Matcher上調用group(1)將導致異常。是什麼賦予了?

p.s.請注意,我將\d*更改爲\d+。幾乎每個想要匹配十進制數字的人都需要小數點後至少一位數字。如果這不是這種情況,請繼續並將其改回。