Я изо всех сил стараюсь иметь регулярное выражение для разделения ключей и значений.perl регулярное выражение для одиночного разделителя символов
Требование состоит в том, что разделитель равен: :, но ключи могут иметь несколько «::». Значения могут иметь «:», но клавиши не могут. Итак, первый «:» должен быть разделителем. Если перед значениями есть какое-либо пространство, оно должно быть устранено.
У меня есть следующее регулярное выражение, но оно не подходит для ключа: value (без пробела после ':').
if ($_ =~ /^(.+?):\s+(.*)$/)
{
$data{$1} = $2;
}
действительных ключевых значений:
key:value
key: value
key: value::subvalue
key::subkey:value
key::subkey:value:subvalue
key::subkey: value:subvalue
key::subkey::subsubkey:value
Обратите внимание, что ключ, подключе, значение, подзначение может быть заменяет любое слово. Мое регулярное выражение работает для всех, кроме первого.
Любые идеи?
Я могу иметь elsif и добавить другое регулярное выражение, но мне интересно, могу ли я иметь одно регулярное выражение для всего этого.
Спасибо,
Можем ли мы получить примерный набор действительных и недействительных строк? – Vache
Я добавил несколько примеров ключевых значений. – Amir
@Amir: пожалуйста, можете ли вы добавить недопустимые примеры? –