Если не может быть вложенных тегов, вы можете использовать следующее регулярное выражение:
\[%=(.*?)%]
Символы означают следующее:
\[ Match a literal [ character. The backslash is required otherwise [ would
start a character class.
%= Match %=
(.*?) Match any characters, non-greedy. i.e. as few as possible. The parentheses
capture the match so that you can refer to it later.
%] Match %] - Note that it is not necessary to escape ] here, but you can if
you want.
Вот как вы можете использовать его в C #:
string s = "sanfdsg[%=jdgashg%]jagsklasg";
Match match = Regex.Match(s, @"\[%=(.*?)%]");
if (match.Success)
{
Console.WriteLine(match.Groups[1].Value);
}
Вывод:
jdgashg
Или для получения нескольких совпадений:
string s = "foo[%=bar%]baz[%=qux%]quux";
foreach (Match match in Regex.Matches(s, @"\[%=(.*?)%]"))
{
Console.WriteLine(match.Groups[1].Value);
}
Вывод:
bar
qux
Обратите внимание на строковый литерал:написано как @ "...".Это означает, что обратные слеши внутри строки обрабатываются как буквенные обратные слэши, а не как экранирующие коды.Это часто полезно при написании регулярных выражений на C #, чтобы избежать необходимости удваивать все обратные слеши в строке.Здесь это не имеет большого значения, но в более сложных примерах это поможет больше.