Я писал регулярное выражение, которое позволяет мне сопоставлять утверждения if/elseif/else. У меня есть, насколько я могу (сопоставление инструкции if/else) с помощью сообщества Stack Overflow.Соответствие if/elseif/else с регулярным выражением
Это содержание Я пытаюсь соответствовать:
{?if gender = male}You're a guy!{?elseif gender = female}You're a gal!{?else}{#gender|capitalise}{?endif}
(Решение я и добиваюсь позволит неограниченный «ElseIf» заявления, желательно). Он также должен быть в состоянии соответствовать следующее, чтобы убедиться, что он имеет обратную совместимость:
{?if gender = male}Male{?else}Female{?endif}
{?if gender != female}{#gender}{?endif}
выход Я ищу:
0: gender = male
1: You're a guy!
2: {?elseif gender = female}You're a gal!
3: {#gender|capitalise}
Номер 2 должен иметь каждый ElseIf в той же строке, чтобы они могли быть разделены и обработаны после, как:
2: {?elseif gender = female}You're a gal!{?elseif this = that}Output (...)
Мой текущий регулярное выражение близко, но не достаточно хорошо.
{\?if ([^{}]+)}(.+?)(?:{\?else}(.+?))?{\?endif}
Я все еще изучаю регулярные выражения, поэтому я не уверен, как это сделать.
Нет, если они вложены. – Bergi
Это немного язык, и вы не должны пытаться его анализировать с помощью регулярных выражений. – 2014-09-27 17:05:11
Что вы предложите вместо регулярных выражений @torazaburo? Я не мог найти лучшего способа сделать это с моим ограниченным навыком в JavaScript (и я не знал, где спросить, как это сделать!) – Forest