首页 咨询中心 IT学堂
asp.net提取模板标签字符串变量正则表达式
asp.net提取模板标签参数字符串变量可以用正则表达式,现在要创建一个动态的标签替换,用正则表达式操作方法 

1.在模板文件里面有newslist_1_12 文章列表标签 要提取这个列表的参数12 是列表行数 1是所属分类编号 

现在要新闻列表10行分类为52编号的列表,其替换标签是 newslist_52_10 (这样子可以明白吧) 

2.分析思路 

   a.把模板里面的@"newslist_/d{1,2}_/d{1,2}" 提取出来,变成字符串数组 

   b.把字符串数组里面的参数提取出来 

   c.提取的参数操作数据库生成HTML代码 

public void getNewlList() 



rxx = new System.Text.RegularExpressions.Regex(@"NewsList_(?<PID>(d{1,2}))_(?<Num>(d{1,2}))", 
RegexOptions.Compiled|RegexOptions.IgnoreCase); 
string input = Console.ReadLine(); 
if (input == "Q") 

return; 

Console.WriteLine("字符串长度:" + input.Length); 
System.Text.RegularExpressions.MatchCollection m; 
m = rxx.Matches(input); 
Console.WriteLine(m.Count); 
for (int i = 0; i < m.Count; i++) 


//再次提取已经正则表达式分组后的字符串 
            Console.WriteLine(m[i].Result("分类:${PID} 行 数:${Num}")); 


//单个提取模式 
//      print(rxx.Match(input).Result("${PID}${Num}") + " 分类编号", true); 

getNewlList(); 


  
附:微软MSDN解释 

反向引用提供查找重复字符组的方便的方法。它们可被认为是再次匹配同一个字符串的 快捷指令。 

例如,若要查找重复且相邻的字符(如单词“tall”中的两个 L),可以使用正则表达式 (?<char>w)k<char>, 该正则表达式使用元字符 w 来查找任何单个单词的字符。分组构造 (?<char> ) 将元字符括在其中,以强制正则表达式引擎记住子表达式匹配(在此示例中将是任意单个字符),并以名称“char”保存它。反向引用构造 k<char> 使引擎对当前字符和以名称“char”存储的先前匹配字符进行比较。只要单个字符与其前面的字符相同,整个正则表达式就可以找到一个匹配。 

要找到重复的全字,您可以修改该分组子表达式,以搜索前面是空格的任何字符组,而 不是只搜索任意单个字符。可以用匹配任何字符组的子表达式 w+ 替换元 字符 w,并使用元字符 s 匹配字符分组前的空格。这就生成了正则表达式 (?<char>sw+)k<char>, 该正则表达式查找任何重复的全字(例如“the the”),但也会匹配指定字符串的其他重复情况,例如词组“the theory”中的重复情况。 

为验证上述第二种匹配是以单词为边界的,可以将元字符  添加到重复匹配的后面。所生成的正则表达式 (?<char>sw+)k<char> 只查找重复的、前面有空格的全字。 
上一篇 ASP.NET MVC环境下实现一个网站多个网站模板的方法
上一篇 正则表达式语法和正则表达式用法
本方链接: http://www.web258.cn/article/show/i1246.html
ARTICLE 相关推荐