Обработка регулярных выражений Java - PullRequest
0 голосов
/ 20 марта 2011

если у меня есть текст

R 26 бла бла бла бла R 25 бла бла R 25/30 блабла бла S 30/50/30 бла бла

и у меня есть регулярное выражение

[RS] (\\d+|\\d+/\\d+|\\d+/\\d+/\\d+) 

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

Например, я хочу следующие пары:

R 26 : bla bla bla bla
R 25 : bla bla
R 25/30 : bla bla bla
S 30/50/30 : bla bla

, возможно, это изображение будет более четким:

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Вот, пожалуйста!

Pattern pattern = Pattern.compile("([RS] (\\d+|\\d+/\\d+|\\d+/\\d+/\\d+)) ([^RS]*)");

Matcher matcher = pattern.matcher("R 26 bla bla bla bla R 25 bla bla R 25/30 bla bla bla S 30/50/30 bla bla");

while(matcher.find()) {
    System.out.println(matcher.group(1) + " " + matcher.group(3));
}
0 голосов
/ 20 марта 2011

Порядок альтернатив важен. С вашим оригинальным регулярным выражением, вторая и третья альтернативы никогда не будут совпадать. Изменение их порядка устраняет проблему следующим образом:

Pattern regex = Pattern.compile("([RS] (\\d+/\\d+/\\d+|\\d+/\\d+|\\d+)) ([^RS]*)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...