2016-07-22 6 views
-1

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

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

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

Я уже нашел регулярное выражение, которое, вероятно, дает мне то, что является INSIDE {и}, но я не знаю, как его изменить, чтобы вернуть то, что я хочу.

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

ли в C# имеет функцию, аналогичную [ 'java.lang.String # replace'] (https://docs.oracle.com/javase /8/docs/api/java/lang/String.html#replace-java.lang.CharSequence-java.lang.CharSequence-)? – dorukayhan

ответ

2

Этот шаблон должен сделать трюк:

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

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

foreach (var match in rgx.Matches(str)) 
{ 
    // {{FirstName}} 
    // {{LastName}} 
} 
+1

Лучшей альтернативой является 'Regex rgx = new Regex (" {{. *?}} ");', И ​​если строка между фигурными скобками огромна, лучше рассмотреть ее разворачивание как 'Regex rgx = new Regex ("{{[^}] * (?:} (?!}) [^}] *) *}}"); ' –

0

Может быть:

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

^: В самом начале.

$: В конце.

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

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

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

ОБНОВЛЕНИЕ:

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

+0

Это будет соответствовать только если ** вся ** строка похожа на [' {{.. ..}} '] (https://regex101.com/r/vC6bQ2/1) – tchelidze

+0

@tchelidze Итак, Вот почему я получаю downvote? –

+0

Обновлено regex ** ** ** соответствует [последнему вступлению] (https://regex101.com/r/vC6bQ2/2). (*частично*) – tchelidze