Вот проблема, с которой я столкнулся в последнее время. У меня есть атрибуты строки видаАнализ атрибутов с регулярным выражением в Perl
"x=1 and y=abc and z=c4g and ..."
Некоторые атрибуты имеют числовые значения, некоторые имеют значения альфа, некоторые смешанные, некоторые из них даты и т.д.
Каждая строка должна иметь «x=someval and y=anotherval
» в начале, но некоторые нет. У меня есть три вещи, которые мне нужно сделать.
- Validate строки, чтобы быть уверенным, что у них есть
x
иy
. - Собственно разобрать значения для
x
иy
. - Получить остальную часть строки.
Учитывая пример в верхней части, то это приведет к следующим переменным:
$x = 1;
$y = "abc";
$remainder = "z=c4g and ..."
Мой вопрос: Есть ли (разумно) простой способ для разбора этих и Validate с одним регулярное выражение? т.е .:
if ($str =~ /someexpression/)
{
$x = $1;
$y = $2;
$remainder = $3;
}
Обратите внимание, что строка может состоять из толькоx
и y
атрибуты. Это допустимая строка.
Я отправлю свое решение в качестве ответа, но оно не соответствует моему предпочтению с одним регулярным выражением.
Это выглядит мне проще и удобнее, чем любое из «одного регулярного выражения», чтобы управлять ими все "решения. Я мог бы просто добавить a^в начале theregexps для соответствия x = и y =, чтобы избежать случая not_x = ... или аналогичного. Зачем вам нужно одно регулярное выражение? – mirod 2009-07-15 09:01:46