这是我的字符串:"This Is {{ dsfdf {{dsfsd}} ewrwrewr }} My Result"
。
我想删除带有内容的外部花括号。
结果应为"This Is My Result"
。
这是我目前最好的镜头:
Text = Regex.Replace(Text, "{{([^}]*)}}", String.Empty);
但效果不佳。我得到"This Is ewrwrewr }} My Text"
也许它应该通过平衡匹配来解决......
如果有人可以帮助我解决问题,我会非常欣赏,因为虽然有很多尝试但我自己也做不到。
答案 0 :(得分:2)
一种简单但缓慢的方法是多次应用正则表达式,直到没有更多变化:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string s = "This Is {{ dsfdf {{dsfsd}} ewrwrewr }} My Result";
Regex regex = new Regex("{{({?}?[^{}])*}}");
int length;
do
{
length = s.Length;
s = regex.Replace(s, "");
} while (s.Length != length);
Console.WriteLine(s);
}
}
答案 1 :(得分:1)
您如何看待:
string test = "This Is {{ dsfdf {{dsfsd}} \n jkhhjk ewrwrewr }} My Result";
Console.WriteLine(Regex.Replace(test, "{{.*}}", String.Empty, RegexOptions.Singleline));
没有“正则表达式”的版本:
string test = "This Is {{ dsfdf {{dsfsd}} \n jkhhjk ewrwrewr }} My Result";
int startIndex = test.IndexOf("{");
int length = test.LastIndexOf("}") - startIndex + 1;
Console.WriteLine(test.Replace(test.Substring(startIndex, length), String.Empty));