Форум программистов, компьютерный форум, киберфорум
mutagen
Войти
Регистрация
Восстановить пароль
все вопросы по Java которые задают более 3х раз на форуме
Рейтинг: 5.00. Голосов: 1.

RegExp сладости из Java7

Запись от mutagen размещена 01.09.2013 в 17:15
Обновил(-а) mutagen 01.09.2013 в 17:16

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package rexp;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * @author mutagen
 */
public class RexpNamedGroup {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
//        Допустим надо поискать повторяющиеся последовательности из 3 цифр и 2 букв а или b так, 
//        чтобы они полностью совпадали
//        сам рексп будет \\d{3}[ab]{2} - и мы его хотим расширить для поиска повторов
//        что то типа \\d{3}[ab]{2}[пробел]\\d{3}[ab]{2}
//        для этого воспользуемся именованной группой и бекреференсом на неё \\k<mydigits1>
        Pattern digits = Pattern.compile("(?<mydigits1>\\d{3}[ab]{2})\\s+\\k<mydigits1>");
        // допустим у нас есть кандидаты на проверку
        String[] targets = {"123ab 123ab", "123aa 123aa", "123bb 123bb", "123aa 123bb", "123bb 123aa"};
        for (String tgt : targets) {
            Matcher matcher = digits.matcher(tgt);
            if (matcher.matches()) {
//                смотрим на результат
                System.out.println(matcher.group("mydigits1"));
            }
        }
    }
}
Bash
1
2
3
4
5
run:
123ab
123aa
123bb
BUILD SUCCESSFUL (total time: 0 seconds)
итак мы получили что хотели

из минусов - нельзя делать именованные группы на русском(скорее всего и любом другом неанглийском) языке, что малёха ломает модель Java по поводу того что имена пропертей могут быть на любых языках, а именованных групп только на английском, без пробелов и подчеркух
Размещено в Без категории
Показов 4759 Комментарии 1
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для KOPOJI
    Цитата:
    из минусов - нельзя делать именованные группы на русском(скорее всего и любом другом неанглийском) языке, что малёха ломает модель Java по поводу того что имена пропертей могут быть на любых языках
    Думаю, не ломает. Т.к. это относится не напрямую к яве, а к самой библиотеке регулярных выражений.
    Запись от KOPOJI размещена 04.09.2013 в 15:30 KOPOJI вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru