例子1,
<!-- #xxx--> //注意xxx可变[#"aa","bb",111]<!-- xxx#-->
----------------------------
例子2
[#"aa","bb",111]
=============================
要求能匹配例子2,但不能匹配例子1的.
就是如果表达式在查询时,输入字符串(例子1),不匹配;输入字符串(例子2),匹配
解决方案 »
- 高分请教CMS模板应用原理。帮顶有分
- Asp.net给从流中读取到的图片做缓存????
- .net初学者,报错信息,大虾进来指点指点啊~!!!!!
- 数据库连接没有错,连接字符串没有错.没有结果怎么办?
- 刚刚学习ASP.NET,想知道Repeater控件的使用方法?希望高手帮帮我!!!
- 如何在itemtemplate里套if
- 在access中查询一段时间数据怎么查,用DateDiff怎么写查询语句?
- 怎样上传一篇图文并茂的网页
- 关于网站只建一个socket通讯连接
- 怎么我的TreeView在页面上不以树型显示阿
- xmlhttp 404问题
- 请问怎样一个数组传到另一个页面,在那里页面怎样引用它的值?
<!-- #xxx--> //注意xxx可变
<tabl...
<td>....
....
[#"aa","bb",111]
....
....
<!-- xxx#-->
string pat = @"^[#"aa","bb",111]$";
....dsafsafdsa[#"aa","bb",111]fasdfsafsad... 这个地 要...有点困惑...<!-- #xxx-->...sadfsafsafsa[#"aa","bb",111]dfsfsaf...<!-- xxx#--> ... 这个地 要不要
例子2
<td>....
....
[#"aa","bb",111]</td>
.....
....
就不能匹配了
是的,只要有<!-- xxx#--> <!-- #xxx-->括住的都不要选
if(Regex.IsMatch(s,"^\<(\w)*\>$"))
{
Console.WriteLine("这个是不要的!!");
}
试试
"\<!--#(?<Name>[#\w]*)--\>(?<Template>.*?)\<!--\k<Name>#--\>""\[#""(?<Name>[\w]*)"",""(?<Format>.*?)""(?<Length>[,\d]*)#\]"要怎么调整?
(?<!\<!.*?\>\s*)\[\#[^\]]+\](?!\s*\<!.*?\>)
string str = //测试字串
"... <!-- #xxx-->[#\"aa0\",\"bb\",111] <!-- xxx#--> ..." +
"....dsafsafdsa[#\"aa1\",\"bb\",111]fasdfsafsad... " +
"....dsafsafdsa[#\"aa2\",\"bb\",111]fasdfsafsad... " +
"... <!-- #xxx-->[#\"aa4\",\"bb\",111] <!-- xxx#--> ..." +
"....dsafsafdsa[#\"aa5\",\"bb\",111]fasdfsafsad... " +
"... <!-- #xxx-->...sadfsafsafsa[#\"aa6\",\"bb\",111]dfsfsaf... <!-- xxx#--> ... ";
//下面是lz需求的匹配正则式。<\!\-\-\s\#.*?\#\-\->用来匹配注释 如果有特殊需求简单改动一下即可
//注意用“|”做了分组。匹配的时候,取索引为2的组。
//分组索引分配是:全字段匹配为0,然后按“|”分割,从左向右1,2,3,4....
string reg = @"(<\!\-\-\s\#.*?\#\-\->)|(\[.*?\])";
//设置要取的分组索引
int groupIndex = 2; Regex result = new Regex(reg, RegexOptions.Multiline); string adder = "";
foreach (Match m in result.Matches(str))
{
adder += String.Format("{0}\r\n", m.Groups[groupIndex].Value); /*这里Groups是关键*/
} //adder是最终结果
[#"aa1","bb",111]
[#"aa2","bb",111][#"aa5","bb",111]
string reg = @"(<\!\-\-\s\#.*?\#\-\->)|(\[.*?\])";
根据你这个分组,如果我本来就有
str a1 = @"\<!--#(?<Name>[#\w]*)--\>(?<Template>.*?)\<!--\k<Name>#--\>";
string a2 = @"\[#""(?<Name>[\w]*)"",""(?<Format>.*?)""(?<Length>[,\d]*)#\]";根据你的代码改写 "(" + a1 + ")|(" + a2 + ")"; 要怎样获取?