用正则表达式匹配以字符串<f id=开头,以字符串</f>结尾的所有字符串,匹配字符该如何写?急!急!!急!!! 请教各位大虾,用正则表达式匹配以字符串<f id=开头,以字符串</f>结尾的所有字符串,匹配字符该如何写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ^(<f id=)[\w\W]*(<\/f>)$不确定 <f id=[^>]*>([\s\S](?!<f id=))*?</f([^>])*>缺点是要是出现了如下的形式则出错<f id=开头, 中间还有一个<f id=的字符,结束符</f> 今天刚写完个类似的(中间有没有字符?):中间有字符的:string str = "SDGS<f id=content size=XXX style='XXXXX'>DGSDGS</f>";str = System.Text.RegularExpressions.Regex.Replace(str,"<f id=.*?>.*?</f>","$");Response.Write(str);中间没有字符的:string str = "SDGS<f id=content size=XXX style='XXXXX'></f>";str = System.Text.RegularExpressions.Regex.Replace(str,"<f id=.*?></f>","$");Response.Write(str); MatchCollection mc = Regex.Matches(yourString, "<f id=(?<any>.+?)</f>", RegexOptions.IgnoreCase);foreach (Match m in mc){ Response.Write(m.Groups["any"].Value.ToString() + "<br />");} 匹配所有:MatchCollection mc = Regex.Matches(yourString, @"^<f id=\w*</f>$", RegexOptions.IgnoreCase); string yourStr = ......MatchCollection mc = Regex.Matches(yourStr, "<f\\s+id=.+?>[\\s|\\S]*?</f>", RegexOptions.IgnoreCase);foreach(Match m in mc){ m.Value;} 这主要看你的<f id=和</f>之间是否有特殊情况的存在了,如果在这之间不会出现<或<f id=这样的字符串,好多正则都可以匹配的,试下下面的MatchCollection mc = Regex.Matches(str, "<f id=.*?</f>", RegexOptions.IgnoreCase); MatchCollection mc = Regex.Matches(yourString, @"<f\s+id=\w*</f>", RegexOptions.IgnoreCase); string vsPattern = @"^<f id=.*</f>$";if(Regex.IsMatch(vsText,vsPattern,RegexOptions.IgnoreCase)){}测试过,呵呵@"^<f id=\w*</f>$" 好像 ?<f id= adsfa ></f>"这样id=后面有空格的不能匹配?共同学习! 以上的有一点不足,在以下这两种情况下:1、<f id="f1">...<f>...</f>...</f>...<f id="f2">...<f>...</f>匹配的只是第一个<f到第一个</f>,而不是第二个</f>2、<f id= >...</f>这种不完整的也被匹配到。正则表达式改成这个样<f\s+id=[^>\s]+((?:[^<]|<(?!f id=))*)</f>可以匹配比较配对的完整的<f></f>标签对不过还没有完全解决多重嵌套的问题,以下用depth关键字就解决了,不过有很多正则表达式引擎还没有支持,.net的Regex支持。<f\s+id=(?>[^<>]+|\((?<DEPTH>)|\)(?<-DEPTH>))*(?(DEPTH)(?!))</f> 请问,怎样用代码实现拖动鼠标,拉伸窗体 真奇怪!为何保存不下 Panel上的图片? 参数传递的问题---都来看看!谢谢 能帮我重构一下吗? 急急急, 都进来看看吧! 小白小白...怎么我的combobox属性里面没有keypress 再次提问,C#引用OCX问题 现在想写几组商务逻辑库,希望既能被WinForm调用,也能被ASP.NET调用 VC代码在C#中的改造问题 我想问一下北京现在使用最多的是什么开发工具 Visual Studio 中文版的最新版本是什么,哪有下载 测试webservice 地址是否可用或存在的问题!
不确定
缺点是要是出现了如下的形式则出错<f id=开头, 中间还有一个<f id=的字符,结束符</f>
中间有字符的:
string str = "SDGS<f id=content size=XXX style='XXXXX'>DGSDGS</f>";
str = System.Text.RegularExpressions.Regex.Replace(str,"<f id=.*?>.*?</f>","$");
Response.Write(str);
中间没有字符的:
string str = "SDGS<f id=content size=XXX style='XXXXX'></f>";
str = System.Text.RegularExpressions.Regex.Replace(str,"<f id=.*?></f>","$");
Response.Write(str);
foreach (Match m in mc)
{
Response.Write(m.Groups["any"].Value.ToString() + "<br />");
}
MatchCollection mc = Regex.Matches(yourStr, "<f\\s+id=.+?>[\\s|\\S]*?</f>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
m.Value;
}
if(Regex.IsMatch(vsText,vsPattern,RegexOptions.IgnoreCase))
{}测试过,呵呵
@"^<f id=\w*</f>$" 好像 ?<f id= adsfa ></f>"这样id=后面有空格的不能匹配?
共同学习!
1、<f id="f1">...<f>...</f>...</f>...<f id="f2">...<f>...</f>
匹配的只是第一个<f到第一个</f>,而不是第二个</f>
2、<f id= >...</f>
这种不完整的也被匹配到。正则表达式改成这个样
<f\s+id=[^>\s]+((?:[^<]|<(?!f id=))*)</f>
可以匹配比较配对的完整的<f></f>标签对不过还没有完全解决多重嵌套的问题,以下用depth关键字就解决了,不过有很多正则表达式引擎还没有支持,.net的Regex支持。
<f\s+id=(?>[^<>]+|\((?<DEPTH>)|\)(?<-DEPTH>))*(?(DEPTH)(?!))</f>