Регулярное выражение с поведением типа "И/ИЛИ"

  • Автор темы BigDaddy
  • Дата начала

BigDaddy

Guest
Регулярное выражение с поведением типа "И/ИЛИ"

Есть строка следующего вида:

MODIFIER KEYWORD1=var1 KEYWORD2=var2 MODIFIER2 KEYWORD3=var3

В этой строке обязательными параметрами есть все параметры, кроме KEYWORD1 и KEYWORD2. В строке может присутствовать или один, или другой или оба.
При этом KEYWORD1 и KEYWORD2 - реально два определенных ключевых слова.

При этом, KEYWORD3 может быть равен KEYWORD1, KEYWORD2 или другому ключевому слову, то-есть может принимать любые значения.

Так вот, проблема - как построить регулярное выражение, которое бы мне вытащило из этой строки все ключевые слова, их значения и модификаторы? Можно ли в принцыпе это реализовать в одном регулярном выражении?

Пробовал варианты типа (KEYWORD1|KEYWORD2)=(\w+) - получаю сам KEYWORD и его значение, но работает только ИЛИ, если оба присутствуют, то один результат теряется... До чего-то более серйозного пока не додумался...

Спасибо.
 

Demiurg

Guest
разбей строку по пробелам, потом каждую по знаку равно, и не нужны тебе регулярные выражения.
 

Georgy

Guest
PHP:
$keys = explode( ' ', $string );

for( $i = 0; $i < sizeof( $keys ); $i ++ )
{
  if ( strstr( $keys[$i], '=' ) )
  {
      list( $key, $word ) = explode( '=', $keys[$i] );
      print $key . ' = ' . $word . '<BR>';
  }
}
 

BigDaddy

Guest
Понедельник - день тяжелый. Действительно, чего это меня в реги понесло??? :))

"Используй то, что под рукою, и не ищи себе другое" (с) В. Фог :)))

Спасибо.
 
Сверху