В настоящее время я пишу регулярное выражение, которое позволит мне использовать базовую условную систему if/else, написанную на JavaScript. (Я знаю, что есть, вероятно, более простые способы сделать это!)Соответствие if/else с регулярным выражением
Это содержание мне нужно работать с:
{?if language = german}Hallo!{?else}Hello!{?endif}
{?if language = german}{#greeting}{?endif}
Я написал /{\?if ([^{}]+)}(.+)(?:{\?else})?(.+)?{\?endif}/g
, которые, к сожалению, только соответствует части этого. Я использую RegExr для тестирования до сих пор.
Мой ожидаемый результат, используя выходное выражение 1: $1\n2: $2\n3: $3\n
, будет:
1: language = german
2: Hallo!
3: Hello!
1: language = german
2: {#greeting}
3:
К сожалению, я получаю вместо этого:
1: language = german
2: Hallo!{?else}Hello!
3:
1: language = german
2: {#greeting}
3:
Что я здесь делаю неправильно? Я относительно новичок в написании регулярных выражений, поэтому я предполагаю, что есть способ, и я просто не делаю это правильно.
Я согласен, что есть более простые способы сделать это! Но +1 для хорошего четкого вопроса. – Smandoli
Попробуйте использовать неживые кванторы. Поскольку 'else' является факультативным, жадный квантификатор проходит мимо него. – Barmar