Разобрать строку строки, открыв файл с помощью Regex - PullRequest
1 голос
/ 18 ноября 2011

Это текстовый файл ниже (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();
        }
    }

Любые предложения будут оценены.

Ответы [ 2 ]

4 голосов
/ 18 ноября 2011

Вы можете значительно упростить регулярное выражение для этого. Поскольку данные кажутся разделенными по конвейеру, вы должны просто разделить их по символу канала. В итоге вы получите массив полей, которые вы можете анализировать при необходимости:

String[] fields = line.split("\\|");
4 голосов
/ 18 ноября 2011

| - это специальный символ регулярного выражения, который означает «или».Итак, вы должны избежать этого.

public static String pattern = "(.*?)\\|(.*?)\\|(.*?)\\|(.*?)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...