Замените текстовые заполнители регулярным выражением

У меня есть текстовый шаблон с текстовыми переменными, заключенными в {{ и }}.

Мне нужно регулярное выражение, чтобы дать мне все совпадения, которые «Включают {{ и }}».

Например, если в моем тексте есть {{FirstName}}, я хочу вернуть {{FirstName}} в качестве совпадения, чтобы иметь возможность заменить его фактической переменной.

Я уже нашел регулярное выражение, которое, вероятно, дает мне то, что ВНУТРИ { и }, но я не знаю, как изменить его, чтобы оно возвращало то, что я хочу.

/\{([^)]+)\}/

person Pouyan    schedule 22.07.2016    source источник
comment
Есть ли в C# функция, аналогичная java.lang.String#replace?   -  person dorukayhan    schedule 22.07.2016


Ответы (2)


Этот шаблон должен помочь:

string str = "{{FirstName}} {{LastName}}";

Regex rgx = new Regex("{{.*?}}");

foreach (var match in rgx.Matches(str))
{
    // {{FirstName}}
    // {{LastName}}
}
person Zein Makki    schedule 22.07.2016
comment
Лучшей альтернативой является Regex rgx = new Regex("{{.*?}}");, и если строка между фигурными скобками огромна, вам лучше рассмотреть возможность развертывания ее как Regex rgx = new Regex("{{[^}]*(?:}(?!})[^}]*)*}}");. - person Wiktor Stribiżew; 22.07.2016

Может быть:

alert(/^\{{2}[\w|\s]+\}{2}$/.test('{{FirstName}}'))

^: В начале.

$: В конце концов.

\{{2}: Персонаж { 2 раза.

[\w|\s]+: буквы алфавита или пробелы 1 или более раз.

\}{2}: Персонаж } 2 раза.

ОБНОВЛЕНИЕ:

alert(/(^\{{2})?[\w|\s]+(\}{2})?$/.test('FirstName'))

person Tân    schedule 22.07.2016
comment
Это будет соответствовать, только если целая строка похожа на {{....}} - person tchelidze; 22.07.2016
comment
@tchelidze Итак, вот почему меня минусуют? - person Tân; 22.07.2016
comment
Обновленное регулярное выражение только соответствует последнему вхождению. (частично) - person tchelidze; 22.07.2016