111,097
社区成员




string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));//读取txt
Regex reg = new Regex(@"(?isx) #匹配模式,忽略大小写,“.”匹配任意字符
<span[^>]*> #开始标记“<span...>”
((?> #分组构造,用来限定量词“*”修饰范围
<span[^>]*> (?<Open>) #命名捕获组,遇到开始标记,入栈,Open计数加1
| #分支结构
</span> (?<-Open>) #狭义平衡组,遇到结束标记,出栈,Open计数减1
| #分支结构
(?:(?!</?span\b).)* #右侧不为开始或结束标记的任意字符
)* #以上子串出现0次或任意多次
(?(Open)(?!))) #判断是否还有'OPEN',有则说明不配对,什么都不匹配
</span>
");
tempStr = reg.Replace(tempStr, a =>
{
return a.Groups[1].Value;
});
/*
* <div><span class="c2"></span>abc<span class="c2"></span>
</div>
<div><span class="c2"></span>abc<span class="c2"></span>
</div>
*/
string str = @"<SPAN Class=""c1"">
<div><span class=""c2""></span>abc<span class=""c2""></span>
</div>
</span>
<SPAN Class=""c1"">
<div><span class=""c2""></span>abc<span class=""c2""></span>
</div>
</span>
";
Regex reg = new Regex(@"(?is)<span[^>]*?>[^<>]+((?:(?:(?<Open><[^>]+?>)[^<>]*)*(?:(?<-Open></[^>]+?>)[^<>]*)*)*)(?(Open)(?!))</span>");
foreach (Match m in reg.Matches(str))
Console.WriteLine(m.Groups[1].Value);
[code=C#]string pattern = @"(?i)(?<=<SPAN Class=""c1"">)[\s\S]*(?=</span>)";
string tempStr = Regex.Match(tempStr,pattern).Value;
[/code]string result = Regex.Replace(str, @"(?is)<span[^>]*?>(.+)</span>", "$1");
string str = @"fdsafsdfsdfa<SPAN Class=""c1"">
<div><span class=""c2""></span>abc<span class=""c2""></span>
</div>
</span>asdfasdfasd
<SPAN Class=""c1"">
<div><span class=""c2""></span>abc<span class=""c2""></span>
</div>
</span>fsad
";
Regex reg = new Regex(@"(?is)\s*<span[^>]*?>((?:(?<Open>)<span[^>]*?>|(?<-Open>)</span>|(?:(?!</?span).)*)*)(?(Open)(?!))</span>\s*");
str = reg.Replace(str, "$1");
Console.WriteLine(str);