2012-11-18 16 views
0

我試圖用這個正則表達式中的Java:下面的代碼:Java的正則表達式不匹配(<)簽署

public class Intervals { 
public static void main(String[] args) { 
    try { 
     FileReader fr = new FileReader(new File("ex11.intervals.txt")); 

     BufferedReader br = new BufferedReader(fr); 

     while(br.read() != -1){ 
      String currentLine = new String(br.readLine()); 

      Pattern p = Pattern.compile("<hr(+size *= *[0-9]+)? *>"); 

      Matcher m = p.matcher(currentLine); 

      while(m.find()){ 
       System.out.println(currentLine); 
      } 
     } 

    } catch(FileNotFoundException fne){ 
     fne.printStackTrace(); 
    } catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 
} 

不過,這並不工作,但如果我執行它使用egrep UNIX實用程序它可以正常工作。

ex11.intervals.txt內容:

<hr> 
<hr > 
<hr size=15> 
<hr size = 21 > 

有人知道與此發生?

我已經試過

Pattern p = Pattern.compile("<hr>") 

但無論是作品。

任何建議,幫助?

在此先感謝

回答

7

更改您的代碼讀取該文件,如下所示:

String currentLine = null; 

while((currentLine = br.readLine()) != null){ 

} 

當你做read()你總是看的第一個字符從而跳過你的小於符號HTML標記。

+2

另外,將Pattern.compile(...)語句移出循環並重用。 –

+0

謝謝dinukadev。我比其他相關細節更專注於RegEx。 – InfZero

+0

沒有probs。樂意效勞 :)。乾杯 – dinukadev