Я пытаюсь использовать регулярное выражение, чтобы захватить 2 части одной полной строки. У меня нормально работает регулярное выражение на http://gskinner.com/RegExr/.
Вот пример строки:
Regex is fun when it works 99
Вот мое регулярное выражение
(.*)\\s+(\\d+)$
Это группы, которые я получаю при использовании сопоставления Java (matches()) и шаблона:
1: Regex is fun when it works 99
2: Regex is fun when it works
Используя обычное регулярное выражение (на RegExr), я получаю результаты, которых действительно ожидаю:
1: Regex is fun when it works
2: 99
Есть ли какие-либо предостережения при добавлении Regex в Java, о которых мне нужно знать? У меня уже есть \\ для специальных символов. Может быть, есть хитрость в использовании . ?
Если вы хотите, чтобы пример приложения копировался и вставлялся:
String str = "Regex is fun when it works 33";
String regx = "(.*)\\s+(\\d+)$"
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(str);
if (m.matches()) {
for (int i = 0; i < m.groupCount(); i++) {
System.out.println(i + ": " + m.group(i));
}
}