这是我打开的以下文本文件(log.txt),需要使用正则表达式匹配每一行。
Jerty|gas|petrol|2.42
Tree|planet|cigar|19.00
Karie|entertainment|grocery|9.20
所以我写了这个正则表达式,但没有匹配。
public static String pattern = "(.*?)|(.*?)|(.*?)|(.*?)";
public static void main(String[] args) {
File file = new File("C:\\log.txt");
try {
Pattern regex = Pattern.compile(pattern);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
Matcher m = regex.matcher(line);
if(m.matches()) {
System.out.println(m.group(1));
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
任何建议都将受到赞赏。
答案 0 :(得分:4)
|
是一个特殊的正则表达式符号,表示'或'。所以,你必须逃脱它。
public static String pattern = "(.*?)\\|(.*?)\\|(.*?)\\|(.*?)";
答案 1 :(得分:4)
您可以为此大大简化正则表达式。由于数据看起来是管道分隔的,因此您应该只分割管道字符。您最终会得到一系列字段,您可以根据需要进一步解析:
String[] fields = line.split("\\|");