2012-11-07 74 views
1

我的程序顯示匹配的結果,但我想按照最佳匹配對結果進行排序,第二最佳匹配等等。正則表達式與短語中的子詞不匹配

我的文本文件包含以下行:

red or yellow red' 黃」

所以如果我搜索:red or yellow:我得到下面的結果 'red or yellow red yellow。 所以我希望做的是找到的結果如下排序:

  1. 「紅色和黃色的」 100%匹配
  2. 「紅色」 40%的比賽
  3. 「黃」 40%的匹配

任何幫助表示讚賞。我的代碼如下:

public static void main(String[] args) { 
    // TODO code application logic here 
    String strLine; 
    try{ 
    // Open the file that is the first 
    // command line parameter 
    FileInputStream fstream = new FileInputStream("C:\\textfile.txt""); 
    // Get the object of DataInputStream 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

    Scanner input = new Scanner (System.in);   
    System.out.print("Enter Your Search: "); // String key="red or yellow"; 
    String key = input.nextLine(); 

    while ((strLine = br.readLine()) != null) {  
     Pattern p = Pattern.compile(key); // regex pattern to search for 
     Matcher m = p.matcher(strLine); // src of text to search 
     boolean b = false; 
     while(b = m.find()) {      
     System.out.println(" " + m.group()); // returns index and match 
     // Print the content on the console 
     } 
    } 
    //Close the input stream 
    in.close();    
    }catch (Exception e){//Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
    } 
} 
+0

供將來參考 - 請在問題標題中描述您的問題。諸如「我有問題」或其衍生詞的標題對讀者來說無助! –

回答

2

你有混合模式和搜索空間。該行(strLine)是您的搜索空間,key是該模式。修復:

Pattern p = Pattern.compile(key); 
Matcher m = p.matcher(strLine); 
+0

謝謝,已經排序了我的一半問題。 –

+0

我想對發現的結果進行排序如下: 1.「紅色和黃色」100%匹配 2.「紅色」40%匹配 3.「黃色」40%匹配 任何幫助,您已排序我的一半指出我愚蠢的錯誤。我爲此感謝你。 –

+0

請爲此提一個新問題。 –