如何仅从Java文件中获取字符

时间:2018-09-20 09:32:39

标签: java regex

我有一个文件txt。这是文件:

    Team            P     W    L   D    F      A     Pts
1. Arsenal         38    26   9   3    79  -  36    87
2. Liverpool       38    24   8   6    67  -  30    80
3. Manchester_U    38    24   5   9    87  -  45    77
4. Newcastle       38    21   8   9    74  -  52    71
5. Leeds           38    18  12   8    53  -  37    66
6. Chelsea         38    17  13   8    66  -  38    64
7. West_Ham        38    15   8  15    48  -  57    53
8. Aston_Villa     38    12  14  12    46  -  47    50
9. Tottenham       38    14   8  16    49  -  53    50

我如何只获得球队名称?我尝试通过以下方式使用正则表达式,但不起作用:

FileReader f;
f=new FileReader("file.txt");
         BufferedReader b;
         b=new BufferedReader(f);
s=b.readLine(); 
String[] name = s.split("\\w+");
             for(int i=0;i<name.length;i++)
             System.out.println(name[i]);

我该如何解决?预先感谢大家!

4 个答案:

答案 0 :(得分:1)

FileReader f;
f=new FileReader("file.txt");
     BufferedReader b;
     b=new BufferedReader(f);
while(s=b.readLine()!=null){
     Matcher name=Pattern.compile("(?<=\\d\\.\\s)\\S+").matcher(s);   
     if(name.find())
           System.out.println(name.group());
 }

此处,正则表达式(?<=\\d\\.\\s)\\S+仅与序列号后的名称匹配。 Regex

答案 1 :(得分:0)

尝试使用replaceAll,找到所有单词字符(a-zA-Z_)并将其全部替换为空。这就是队名。

s=b.readLine();
s.replaceAll("[^a-zA-Z_]+","");
System.out.println(s);

答案 2 :(得分:0)

如果您想逐行阅读,并且文件具有所显示的结构。这些代码使您可以获取俱乐部名称。

File f = new File("file.txt");
Scanner sc = new Scanner(f);
sc.nextLine();
while (sc.hasNextLine()) {
    String[] name = sc.nextLine().split("\\s+");
    System.out.println(name[1]);
}

答案 3 :(得分:0)

您的字符串s是一行:

1. Arsenal         38    26   9   3    79  -  36    87

您所需要做的就是按空格分开并获得第二个条目:

s.split(" ")[1]

RegEx在这里过大。对每一行执行此操作,然后在每个步骤将名称添加到列表中。