我有一个文件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]);
我该如何解决?预先感谢大家!
答案 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在这里过大。对每一行执行此操作,然后在每个步骤将名称添加到列表中。