поиск текста до конца регулярного выражения - PullRequest
4 голосов
/ 24 октября 2011

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

Например, текст может быть похож на ...

V: средний голос T: темп

Я хочу использовать регулярное выражение, чтобы получить "V:" и текст за ним.

Есть ли хороший, быстрый способ сделать это с помощью регулярных выражений?

Ответы [ 3 ]

4 голосов
/ 24 октября 2011

Если бы ваш начальный персонаж был исправлен, вы бы создали шаблон как:

Pattern vToEndOfLine = Pattern.compile("(V:[^\\n]*)")

и используйте find() вместо matches().

Если ваш начальный символ динамический, вы всегда можете написать метод для возврата желаемого шаблона:

Pattern getTailOfLinePatternFor(String start) {
    return Pattern.compile("(" + start + "[^\\n]*");
}

С ними можно немного поработать в зависимости от ваших потребностей.

1 голос
/ 24 октября 2011

Вот лучший, самый чистый и простой (т.е. однострочный) способ:

 String[] parts = str.split("(?<=^\\w+): ");

Пояснение:

Регулярное выражение использует положительный взгляд, чтобы разбить на «:» после первого слова (в данном случае «V») и захватить обе половины.

Вот тест:

String str = "V: mid-voice T: tempo";
String[] parts = str.split("(?<=^\\w+): ");
System.out.println("key = " + parts[0] + "\nvalue = " + parts[1]);

Выход:

key = V
value = mid-voice T: tempo
1 голос
/ 24 октября 2011

Для сопоставления с образцом попробуйте следующий пример:

V:. * $

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...