Регулярное выражение для соответствия “|”

Эй парни, я пытаюсь использовать Java useDelimiter метод на он Scanner класс, чтобы сделать некоторый простой парсинг. В основном каждая строка является записью, разграниченной "|", так например:

2 | John Doe
3 | Jane Doe
4 | Jackie Chan

Метод берет в качестве параметра регулярное выражение, для которого можно соответствовать для. Может кто-то предоставлять мне регулярное выражение, которое соответствовало бы | (Вертикальная панель, разделенная одним пространством с обеих сторон).

Спасибо, я был бы очень признателен за его!

8
задан skaffman 15 May 2011 в 12:58
поделиться

5 ответов

Я придумал \ s \ | \ s , который в Java будет выражаться как "\\ s \\ | \\ s ". Но я не знаю, лучший ли он. Мне не нужно ничего хардкорного, просто то, что работает, и это, кажется, :)

Извините за ответ на мой собственный вопрос, думаю, после того, как я его напечатал, это помогло мне думать.

14
ответ дан 5 December 2019 в 08:51
поделиться

Вот фрагмент кода, который анализирует строку (или целый файл, Scanner принимает оба варианта) и извлекает номер и имя из каждой строки :

String s = 
    "1 | Mr John Doe\n" + 
    "2 | Ms Jane Doe\n" + 
    "3 | Jackie Chan\n";

Pattern pattern = Pattern.compile("(\\d+) \\| ((\\w|\\s)+)");
Scanner scan = new Scanner(s);
while (scan.findInLine(pattern) != null) {
    MatchResult match = scan.match();

    // Do whatever appropriate with the results
    System.out.printf("N° %d is %s %n", Integer.valueOf(match.group(1)), match.group(2));

    if (scan.hasNextLine()) {
        scan.nextLine();
    }
}

Этот фрагмент кода дает следующий результат:

N° 1 is Mr John Doe
N° 2 is Ms Jane Doe
N° 3 is Jackie Chan
4
ответ дан 5 December 2019 в 08:51
поделиться
" \| " 

подойдет, вам нужно избегать кавычек и |

1
ответ дан 5 December 2019 в 08:51
поделиться

Не забудьте включить * для соответствия повторяющемуся символу

\S*\s*\|\s*[\S\t ]*

Отредактировано... Вы можете использовать и просто это .*\|.*

0
ответ дан 5 December 2019 в 08:51
поделиться

......

^[ \| ]?$
0
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: