我正在尝试创建一个程序来识别.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 :(得分: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));
}
使用拆分
的更简单方法 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]);