Жадные и ленивые регулярные выраженияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Жадные и ленивые регулярные выражения

Сообщение Anonymous »

У меня есть файл, который выглядит следующим образом:

Код: Выделить всё

{1:F01WBKPPLPPXXXX0043064084}{2:O940XXXXXXXXXXXXN}{4:
:20:180906/1111100000
:25:PL30109000000000000000000000
:28C:170/1
:60F:C180906PLN682127,32
:61:180906C2,00FCHGNONREF
:86:020?00Transakcji krajowa
platnosc?101?21PLN?222,00?2311701011111111000001111111?24KIOSK FIRMA ULICA
WARSZAWA?25TYTUŁ
:61:180906D0,01FCHGNONREF
ZLECENIE STAŁE NA RACHUNEK W SAN PL
:86:020?00Przelew?101?21PLN?22-0,01?2321113109111111111111111111?24FI
RMA ODBIORCA ULICA WARSZAWA?25TYTUŁ
:62F:C180906PLN682129,31
-}
Я хочу проанализировать его (Java) с помощью регулярного выражения — меня волнуют коды операций (:code:). Я устал вот так:

Код: Выделить всё

String pattern = ":(20|25|28C|60F|61|86|62F|64):(.+)";
Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(file);

while (m.find()) {
String operation = m.group(1);
String value = m.group(2);
}
и

Код: Выделить всё

String pattern = ":(20|25|28C|60F|61|86|62F|64):(.+?)";
Это не работает. Почему?
Похоже, что ни жадное, ни ленивое регулярное выражение не работает.

Подробнее здесь: https://stackoverflow.com/questions/792 ... xpressions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»