извлечь значения с помощью регулярного выражения Java - PullRequest
0 голосов
/ 04 августа 2011

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

String test="[ABC]Name:User:Date: Adresse ";

Я хочу извлечь имя, пользователя, дату и адрес Я могу сделать трюк с подстрокой и разделить

String test = "String test="[ABC]Name:User:Date: Adresse ";
        String test2= test.substring(5,test.length());
        System.out.println(test2);
        String[] chaine = test2.split(":");
        for(String s :chaine)
        {
            System.out.println("Valeur " + s);
        }

но я хочу попробовать с регулярным выражением, я сделал

pattern = Pattern.compile("^[(ABC)|:].");

но это не работает

Можете ли вы помочь мне, пожалуйста?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 04 августа 2011

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

    Pattern p = Pattern.compile("^(?:\\[ABC\\])([^:]+):([^:]+):([^:]+):([^:]+)$");
    Matcher m = p.matcher(test);
    while (m.find()) {
        System.out.println("Valeur " + m.group(1)); // Name
        System.out.println("Valeur " + m.group(2)); // User
        System.out.println("Valeur " + m.group(3)); // Date
        System.out.println("Valeur " + m.group(4)); // Address
    }
0 голосов
/ 04 августа 2011

Вы должны уйти от [ и ] здесь является рабочим примером.

^\[(.*)\](.*):(.*):(.*):(.*)$

Обратите внимание, чтоваш код, вероятно, легче поддерживать, чем регулярные выражения в тех случаях, когда регулярное выражение становится сложным.

Некоторые люди, сталкиваясь с проблемой, думают: «Я знаю, я буду использовать регулярные выражения».Теперь у них две проблемы.- Джейми Завински

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