@Artem0071
Безработный mr. Junior

Как правильно задать регулярное выражение?

Как распарсить это:
тут какой то рандомный ненужный текст [(%RANDOM[0,1]%=0) {налево|%DIRECTION%=left}:{направо|%DIRECTION%=right&%SOME_ANOTHER_PARAM%=1}] тут какой то рандомный ненужный текст


Приблизительно в это:
arr: {
  condition: {
    string: '%RANDOM[0,1]%=0',
    param: %RANDOM[0,1]%,
    sign: '=',
    condition: '0'
  },
  if_true: {
    string: 'налево|%DIRECTION%=left',
    output: 'налево',
    param_set: '%DIRECTION%=left'
  },
  if_false: {
    string: 'направо|%DIRECTION%=right&%SOME_ANOTHER_PARAM%=1',
    output: 'направо',
    param_set: '%DIRECTION%=right&%SOME_ANOTHER_PARAM%=1'
  }
}


Схема примерно такая:
[(УСЛОВИЕ){ЕСЛИ_ИСТИНА|ИЗМЕНЕНИЕ_ПАРАМЕТРОВ}:{ЕСЛИ_ЛОЖЬ|ИЗМЕНЕНИЕ_ПАРАМЕТРОВ}]
  • Вопрос задан
  • 160 просмотров
Решения вопроса 3
Stalker_RED
@Stalker_RED
Как-то так: /\[\((.+)\) \{(.+)\}:\{(.+)\}\]/g

https://regex101.com/r/bxxIl0/1
Ответ написан
Комментировать
(?<leftText>.*?)\[(?<string>\(%(?<param>.+?)%(?<sign>.+?)(?<condition>.+?)\)).+?(?<ifTrue>\{(?<outputTrue>.+?)\|(?<paramSetTrue>.+?)\}):(?<ifFalse>\{(?<outputFalse>.+?)\|(?<paramSetFalse>.+?)\})\](?<rightText>.*)

https://regex101.com/r/EGEse1/1
Ответ написан
Комментировать
@MrTimon
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы