`
zu14
  • 浏览: 444682 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

C#正则表达式(RegEx)高级应用之分组(Group)替换(Replace)

阅读更多

对于复杂的、符合一定规则的字符串替换来说,正则表达式无疑是强悍和高效的选择

对于正则表达式的使用,我也写过几篇帖子了,具体可以见下面的地址

http://zu14.cn/tag/regex/

今天,说一下 .NET 里面 正则 使用的稍微高级一些的技巧:分组替换 ,下面我们举两个实例来说明这个问题:

一段字符串,把其中出现的 Ax,Ay 形式的内容,替换为 Ax 的形式(也就是 ,和Ay 都不要了),其中x 和y是数字,位长是 1~2,并且不会出现连排的形式

对于上面的需求,我们进行分析后,可以得出:上面的匹配规则,分为2组,(Ax) 一组,(,Ay) 一组  匹配后,直接返回第一组就OK了

对于.NET来说,分组替换的实现,有多种方式,我这里展示其中的2种,对于上面的例子,我使用 MatchEvaluator 方式

static string CustomReplace(System.Text.RegularExpressions.Match m) 
{ 
    return m.Groups[1].Value; //直接返回分组1
}

string sourceString = "....."; 
string pattern = @"(A\d{1,2})(,A\d{1,2})"; 
System.Text.RegularExpressions.MatchEvaluator myEvaluator = new System.Text.RegularExpressions.MatchEvaluator(CustomReplace); 
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase| System.Text.RegularExpressions.RegexOptions.Multiline); 

string resultString = reg.Replace(sourceString, myEvaluator); 

<script type="text/javascript"><!-- google_ad_client = "pub-5834986413902221"; /* 728x90 */ google_ad_slot = "1368486102"; google_ad_width = 728; google_ad_height = 90; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

一段HTML代码,是用来插入FLASH的,形式如: <embed width=”1000” src=”…” …></embed>

需求是需要对这个FLASH的代码进行自定义,将 宽度 替换为自定义的值

对于这个例子,我们使用分组号 $# 的方式来实现,#代表数字,经过分析,可以得出,将上面的内容,分为3组

string sourceString = "......";
string toWidth = "300"; //自定义的宽度
string pattern = "(<embed .+? width\\s{0,}=\\s{0,}\"{0,1})(\\d+)(\"{0,1})";
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
string resultString = reg.Replace(sourceString, "${1}" + toWidth + "${3}");
    

为了区分分组编号和普通字符,可以用{}标注分组号

分享到:
评论

相关推荐

    C#正则表达式Regex类的用法

    C# 正则表达式 Regex的用法 编程语法

    C#正则表达式的使用

    C#正则表达式的使用,希望大家可以学习学习! [C#] bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3...

    正则表达式(regex)C语言源码,超强查找/替换算法

    正则表达式是一个很强的工具,可以在你的软件中增强查找、替换、匹配等功能。附件中封装了Henry Spencer的regex library源码,有说明和范例,纯C可移值,简单易用。

    正则表达式regex.lib

    正则表达式regex.lib

    详解C#正则表达式Regex常用匹配

    主要介绍了C#正则表达式Regex常用匹配,利用Regex类实现验证,感兴趣的小伙伴们可以参考一下

    C#字符串和正则表达式参考手册.pdf

    在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则...

    正则表达式教程和配套测试工具regextester

    非常棒的正则表达式速成教程,号称30分钟叫...这个教程是配合正则表达式测试工具regextester一起使用的,我已经将regextester打包到里面了,方便大家学习。虽然要五分不少,但是5分确实学会正则表达式还是灰常划算的:)

    jJAVA正则表达式替换字符

    本资源文件是我自己总结的,其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"&lt;title&gt;XXXX&lt;/title&gt;"中的文字XXXX,用正则表达式获取指定...

    正则表达式 Regex Util eclipse插件

    正则表达式调试编辑器, eclipse插件Regex Util,装好后,即可从视图打开Regex Util视图了,比较好用!

    C#_Regex_深入正则表达式.doc

    C#_Regex_深入正则表达式.doc

    csharp正则表达式参考手册

    正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的...

    正则表达式之道

    正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的...

    C#正则表达式使用心得

    正则表达式是用来检验和操作字符串的强大工具。简单的理解正则表达式可以认为是一种特殊的验证字符串。正则表达式常见运用是验证用户输入信息格式,比如上面的那组“\w{1,}@\w{1,}\.\w{1”,实际上就是验证邮件地址...

    net中的正则表达式使用高级技巧

    net中的正则表达式使用高级技巧

    正则表达式之道.pdf

    正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的...

    C++正则表达式-regex类(不依赖其他库)

    提取了boost::regex里边的几个正则表达式匹配搜索接口,打包成DLL,以在不依赖于boost的情况下独立编译运行

    18.C#字符串和正则表达式参考手册 影印版

    C#字符串和正则表达式参考手册 目 录 第1章 系统处理文本的方式 1 1.1 .NET Framework 1 1.1.1 公共语言运行时 2 1.1.2 .NET Framework类库 3 1.2 文本是一种数据类型 4 1.2.1 C#的数据类型 5 1.2.2 字符和字符集 6 ...

    正则表达式整理汇总(参考学习)

    [1]里面在包括一个正则表达式测试小程序 RegexTester.exe [2]正则表达式30分钟入门教程.pdf] [3]正则表达式规则.doc [4]正则表达式30分钟入门教程.mht 自己整理用的,现在分享一下吧。 当然也是为了赚一些...

    RegexTester 正则表达式

    正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式

    正则表达式支持库2.0#0版(静态版)

    注意,本支持库中的所有命令均为高级命令,要求使用者具有一定的正则表达式知识基础。易语言RegEx_static.lib支持库为易语言静态支持库,需要易语言系统5.0版本的支持,需要易语言系统核心支持库5.0版本的支持,提供...

Global site tag (gtag.js) - Google Analytics