У меня есть строка, которую мне нужно проанализировать.Он соответствует следующим требованиям:
- Он состоит из 0 или более пар ключ -> значение.
- Ключ всегда состоит из 2 букв.
- Значение - одно или несколько чисел.
- Между ключом и значением не будет пробела.
- Между отдельными парами может быть или не быть пробела.
Примеры строк, которые я вижу:
- AB1234 // Одна пара ключ-> значение (Ключ = AB, Значение = 1234)
- AB1234 BC2345// Две пары ключ-> значение, разделенные пробелом
- AB1234BC2345 // Две пары ключ-> значение, не разделенные пробелом
- // Пустые пары Sting, No key-> value
- AB12345601BC1234CD1232PE2343 // Множество пар ключ-> значение, без пробела
- AB12345601 BC1234 CD1232 PE2343 // Множество пар ключ-> значение, с пробелами
Iнужно построить Perl-хеш этой строки.Если бы я мог гарантировать, что это была 1 пара, я бы сделал что-то вроде этого:
$string =~ /([A-Z][A-Z])([0-9]+)/
$key = $1
$value = $2
$hash{$key} = $value
Для нескольких строк я мог бы потенциально сделать что-то, где после каждого совпадения вышеприведенного регулярного выражения я беру подстроку исходной строки(исключая первое совпадение) и затем ищите снова.Тем не менее, я уверен, что есть более умный, perl-esque способ добиться этого.
Жаль, что у меня не было такого дерьмового источника данных, чтобы иметь дело с -
Jonathan