要求:现在有一个标签字符串 如下 {dede: typeid=1 size="8" length='10'}
<li >aaaaaaaaaaa</li>
{/dede}
我的代码如下:
string typeid;string size;string length;
如果上面的html代码里面的typeid=1 我定义的typeid的值也是1
注意:typeid=1 typeid="1" typeid='1' 截取的结果都是1 ,size,length其他同理!如果html代码如下 {dede: typeid=1 size="8"}
<li >aaaaaaaaaaa</li>
{/dede}得到的结果将是:
string typeid="1";
string size="8"
string length=null;如果html代码如下 {dede: typeid=1}
<li >aaaaaaaaaaa</li>
{/dede}得到的结果将是:
string typeid="1";
string size=null;
string length=null;
既:哪个不出现在标签中 哪个的值就为null! 可以随意一个不出现在标签中!!而且{dede: typeid=1 size="8" length='10'}
<li >aaaaaaaaaaa</li>
{/dede}和
{dede: asdf typeid=1 askdfjsdk size="8" 任意字符 length='10'}
<li >aaaaaaaaaaa</li>
{/dede}
的结果是一样的 意思是 在typeid size length中间任意加上一个或者多个字符
{dede: typeid=1 size="8" length='10'}
<li >aaaaaaaaaaa</li>
{/dede}和
{dede: length='10' size="8" typeid=1 }
<li >aaaaaaaaaaa</li>
{/dede}的结果是一样的 意思是typeid length size的顺序自由变化 结果一样!
高手给个example这样的功能如果做到呢?给个example....
<li >aaaaaaaaaaa</li>
{/dede}
我的代码如下:
string typeid;string size;string length;
如果上面的html代码里面的typeid=1 我定义的typeid的值也是1
注意:typeid=1 typeid="1" typeid='1' 截取的结果都是1 ,size,length其他同理!如果html代码如下 {dede: typeid=1 size="8"}
<li >aaaaaaaaaaa</li>
{/dede}得到的结果将是:
string typeid="1";
string size="8"
string length=null;如果html代码如下 {dede: typeid=1}
<li >aaaaaaaaaaa</li>
{/dede}得到的结果将是:
string typeid="1";
string size=null;
string length=null;
既:哪个不出现在标签中 哪个的值就为null! 可以随意一个不出现在标签中!!而且{dede: typeid=1 size="8" length='10'}
<li >aaaaaaaaaaa</li>
{/dede}和
{dede: asdf typeid=1 askdfjsdk size="8" 任意字符 length='10'}
<li >aaaaaaaaaaa</li>
{/dede}
的结果是一样的 意思是 在typeid size length中间任意加上一个或者多个字符
{dede: typeid=1 size="8" length='10'}
<li >aaaaaaaaaaa</li>
{/dede}和
{dede: length='10' size="8" typeid=1 }
<li >aaaaaaaaaaa</li>
{/dede}的结果是一样的 意思是typeid length size的顺序自由变化 结果一样!
高手给个example这样的功能如果做到呢?给个example....
解决方案 »
- 在web项目里如何添加暴风影音播放器?
- VS修改完代码为什么还是 修改前的啊!!!
- 请问服务器热备是怎么回事?如何实现?
- 动态添加.ascx控件时赋予属性的问题,帮忙回答一下
- 如何实现点击HYPERLINK后变成紫色,未点前为蓝色?
- 在线等,做一个简单的在线购物程序,用vb.net和asp.net应该如何分析,怎么做??
- DataGrid导出EXCEL后下载文件的问题!加急!!
- 报表问题
- 500分,求一VS.NET安装问题。操作系统格式化好几次(win2k pro or win2k server),没用;安装盘换了几套,没用!内部错误(2237?)!相
- 支持ASP+的主页
- 关于梅花雪树2.0 复选框 点击复选框的问题
- Asp.Net发布问题
取得size组
其他同理
string input = ""; //输入的字符串
string pTypeID = @"typeid=['""\s]?(\d*)['""\s]"; //其他两个只要用size和length替换typeid就行了
string typeid = null;
Match m = Regex.Match(input, pTypeID, RegexOptions.IgnoreCase);
if (m.Success)
typeid = m.Groups[1].Value;
Regex a = new Regex(@"size=[^\d]*(?<size>\d*)");
Match b=a.Match(s);
MessageBox.Show(b.Groups["size"].ToString());
恩 这个可以实现了 如果再加一条 typeid size length不区分大小写 正则应该怎么写?
但是 如果再获得里面的html代码<li >aaaaaaaaaaa </li> 不知道怎么获得...
Regex a = new Regex(@"\<li\>(?<size>[^<]*)\</li\>");
Match b=a.Match(s);
MessageBox.Show(b.Groups["size"].ToString());
string strContent = @"{dede: typeid=1 size=" + "\"8\" " + @"}
<li >aaaaaaaaaaa</li>
{/dede}";
string typeid = ""; string size = ""; string lenght = "";
Regex re = new Regex(@"(?si){dede:(\s*typeid=.*?(?<typeid>\d+))*(\s*size=.*?(?<size>\d+))*([^\s]*\s*lenght=.*?(?<lenght>\d+))*.*?(?:{/dede})");
foreach (Match m in re.Matches(strContent))
{
if (m.Groups["typeid"] != null)
{
typeid = m.Groups["typeid"].Value.Trim();
}
if (m.Groups["size"] != null)
{
size = m.Groups["size"].Value.Trim();
}
if (m.Groups["lenght"] != null)
{
lenght = m.Groups["lenght"].Value.Trim();
}
}
修改为三个都可以不存在,测试一下
<li >aaaaaaaaaaa</li>
{/dede}正则修改为下(?si){dede:(.*?(typeid=).*?(?<typeid>\d+))*(.*?(size=).*?(?<size>\d+))*(.*?(length=).*?(?<length>\d+))*.*?(?:{/dede})
注意你的length和lenght
我把strContent修改后无法获得
我修改成了string strContent = "{dede: afasf typeid=1 爱上对方size=\"8\" length='10'}"
+ "<li >aaaaaaaaaaa</li>"
+ "{/dede}";注意下题目要求...
现在也不知道如何 获得<li >aaaaaaaaaaa</li>?
全部内容
如果再定义一个变量string htmlContent的话,htmlContent的值为“ <li >aaaaaaaaaaa </li>”;
string strContent = @"{dede: asdf typeid=1 askdfjsdk size=" + "\"8\""+ @"任意字符 length='10'}
<li >aaaaaaaaaaa</li>
{/dede}
";
string typeid = ""; string size = ""; string lenght = ""; string li = "";
Regex re = new Regex(@"(?is){dede:(?=(.*?size=.*?(?<size>\d+))*)(?=(.*?typeid=.*?(?<typeid>\d+))*)(?=(.*?length=.*?(?<length>\d+))*).*?<li[^>]*>(?<li>.*?(?=</li>)).*?{/dede}");
foreach (Match m in re.Matches(strContent))
{
if (m.Groups["typeid"] != null)
{
typeid = m.Groups["typeid"].Value.Trim();
}
if (m.Groups["size"] != null)
{
size = m.Groups["size"].Value.Trim();
}
if (m.Groups["lenght"] != null)
{
lenght = m.Groups["lenght"].Value.Trim();
}
if (m.Groups["li"] != null)
{
li = m.Groups["li"].Value.Trim();
}
}
你试试
string input = "{dede: afasf typeid=1 爱上对方 length='10'size=\"8\" }"
+ "<li >aaaaaaaaaaa</li>"
+ "{/dede}";; string typeid = null;
string size = null;
string length = null; MatchCollection mc = Regex.Matches(input, @"(?i)(typeid|size|length)=['""]?([^'""\s}]+)['""]?");
foreach (Match m in mc)
{
switch (m.Groups[1].Value.ToLower())
{
case "typeid":
typeid = m.Groups[2].Value;
break;
case "size":
size = m.Groups[2].Value;
break;
case "length":
length = m.Groups[2].Value;
break;
default:
break;
}
}
Console.WriteLine(typeid);
Console.WriteLine(size);
Console.WriteLine(length);Regex.Match(input, @"(?is)(?<=<li\s*>).*?(?=</li>)");