2017-10-07 46 views
0

我正在嘗試使程序從.txt文件中識別模式。我希望它記住(「單詞」空間「單詞」),然後當它擊中另一個空間時,它會停下來。在第二個空格後停止 - 正則表達式不起作用

我查了很多模式的例子,但他們都沒有工作。

下面是代碼我有:

private void parsing(String line){ 
    String pattern; 
    pattern = "(.*[^\\s]+)"; 
    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(line); 
    boolean b = m.matches(); 
    System.out.println(m.group(0)); 
} 

下面是一個輸出:

hsad vova 13/12/1995 16/05/2005 01/09/2017 17/03/2018 
hsad vova 13/12/1995 16/05/2005 01/09/2017 17/03/2018 

P.S.該程序使用BufferedReader從.txt文件讀取此信息。

這是一個完整的代碼,如果它的需要:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class insuranceSupport { 
    InputStreamReader streamReader = new InputStreamReader(this.getClass().getResourceAsStream("/database.txt")); 
    BufferedReader reader = new BufferedReader(streamReader); 
    String thisLine; 
     public void getLine(){ 
      ArrayList<String> list = new ArrayList<String>(); 
      try { 
       while ((thisLine = reader.readLine()) != null){ 
        list.add(thisLine); 
        System.out.println(thisLine); 
        parsing(thisLine); 
      } 
     } catch (IOException e) { 
       e.printStackTrace(); 
      } 

} 
    private void parsing(String line){ 
     String pattern; 
     pattern = "(.*[^\\s]+)"; 
     Pattern p = Pattern.compile(pattern); 
     Matcher m = p.matcher(line); 
     boolean b = m.matches(); 
     System.out.println(m.group(0)); 
} 

} 

和主:

public class insuranceMain { 
public static void main(String args[]){ 
    insuranceSupport inc = new insuranceSupport(); 
    inc.getLine(); 

} 

}

對不起,這麼多的信息。我一直在研究這個問題很久,找不到解決辦法;只是想確保其他人能夠解決這個問題。

感謝您的努力和時間!

+0

什麼內容輸出什麼,你想要一個更簡單的方法和? – alijandro

+0

「hsad vova 13/12/1995 16/05/2005 01/09/2017 17/03/2018」是文件database.txt的內容(它只是一行)。我想寫一個只保存「hsad vova」的模式@alijandro –

回答

0

這裏是正則表達式來提取結果

Pattern pattern = Pattern.compile("^(\\S+)\\s+(\\S+).*"); 
    Matcher matcher = pattern.matcher("hsad vova 13/12/1995 16/05/2005 01/09/2017 17/03/2018"); 
    if (matcher.matches()) { 
     System.out.println(matcher.group(1)); 
     System.out.println(matcher.group(2)); 
    } 

在`database.txt`使用分割

String[] strings = "hsad vova 13/12/1995 16/05/2005 01/09/2017 17/03/2018".split("\\s+"); 
    System.out.println(strings[0]); 
    System.out.println(strings[1]); 
+0

我想把「hsad」和「vova」放在一起作爲一個字符串(「hsad vova」),而不是像你那樣分開。但是我有一些小括號,我把「hsad vova」當作一個字符串。謝謝,你幫了我很多。 –