希望這是短小的問題.. 在下面的程序中,我已成功提取名爲「pad.txt」的記事本文檔中的所有數據,其中包含3組垂直對齊在'ID'後面加上'Name',然後加上'Date Joined',則該模式是一致的。從.txt文件中提取所有日期
記事本文檔僅包括這樣的: DID:1 名稱:已加入鮑勃 日期:2014年1月12日 ID:2 名稱:吉姆 加入日期:1993年8月21日 ID:3加入史蒂夫 日期: 名稱2016年6月7日
我還定義接受可接受的日期格式的正則表達式:再次1-2數字,斜槓,1-2數字,斜槓,然後2至YEAR日期的四位數字。在開始時,我指定了一個通配符「。」。 < - 一個貪婪的量詞「」星點,說的日期之前的任何字符的任意數目的被接受,以及在日後我還指定了
我的主要目標「」。這個代碼是隻提取所有pad.txt文件中的日期,並將其存儲在一個字符串或東西..
公共類主要{
public static void main(String args[]) throws Exception{
StringBuilder builder = new StringBuilder();
FileReader reader = new FileReader(new File("pad.txt"));
// Define valid date format via regex
String dateRegex = ".* (\\d{1,2})/(\\d{1,2})/(\\d{2,4}) .* ";
int fileContent = 0;
// iterate through entire notepad doc, until = 0 AKA (finished searching doc)
while((fileContent = reader.read()) !=-1){
builder.append((char)fileContent);
}//encapsulating loop
reader.close();
String extracted = builder.toString();
System.out.println("Extracted: " + extracted);
System.out.println();
Matcher m = null;
// Validate that file contents conform with 'dateRegex'
m = Pattern.compile(dateRegex).matcher(extracted);
if(m.find()){
System.out.println("Entire group : " + m.group());
}
}
}
不幸的是,m.group() ; outprint僅返回: 「整個組:6/6/2016」 如前所述,我的目標是提取所有日期,但如果.matcher調用只捕獲整個日期,我無法擺弄所有日期group:6/07/2016「 在我看來,我說任何數量的任何字符在日期之前和之後都是允許的,所以它滾動到最底部並只發現最後日期,我如何定義正則表達式以便它抽出所有的日期,而不僅僅是最後一個,爲什麼只抽出最後一個呢?
我這個無情的審判,不能找出如何..
在此先感謝
AH!就這麼簡單,我知道我的.group實現必須稍微錯誤,非常感謝!有了這個,我已經進一步邁向正則表達式理解:) – Keith