`
zu14
  • 浏览: 459983 次
  • 性别: 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**:这是正则表达式的主要类,包含许多静态方法如`Match`、`Matches`、`Replace`、`Split`等,用于执行匹配、替换和拆分操作。 - **Match**:表示单个匹配结果,包含匹配的文本、子组等信息。 - **Group*...

    C# 正则表达式总结

    3. `Replace`方法:用新的字符串替换所有匹配正则表达式的子串。 4. `Split`方法:根据正则表达式分割字符串,返回一个字符串数组。 三、构造正则表达式 使用`new Regex(pattern)`创建Regex对象,其中`pattern`是...

    C#正则表达式专题学习(很不错)附正则测试工具

    通过上述知识点的学习,开发者可以更有效地使用C#正则表达式进行文本处理,无论是简单的查找替换,还是复杂的模式匹配,都能得心应手。在实际开发中,结合正则测试工具,能够大大提高代码质量和开发效率。

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

    2. 正则表达式对象:在C#中,使用`System.Text.RegularExpressions`命名空间下的`Regex`类来处理正则表达式。 3. 匹配操作:`Match`对象表示正则表达式与输入字符串的一个匹配。`Regex.IsMatch(input, pattern)`...

    C#正则表达式[参考].pdf

    ### C#正则表达式(RegEx)高级应用之分组(Group)替换(Replace) #### 知识点一:分组(Group)的概念与应用 **分组**是正则表达式中的一个强大特性,它允许我们将正则表达式的某个部分视为一个整体。这在很多情况下...

    c#正则表达式大全及示例,推荐收藏

    在C#编程语言中,正则表达式是通过`System.Text.RegularExpressions`命名空间中的类来实现的,尤其是`Regex`类。这篇文章将深入探讨C#中的正则表达式,包括其基本概念、语法、常见模式以及如何在实际项目中使用它们...

    C#正则表达式编程 清华红皮书系列

    总之,《C#正则表达式编程 清华红皮书系列》将详细讲解如何在C#环境中有效地使用正则表达式,涵盖基础语法、高级特性和实践应用,对于提升C#开发者的字符串处理能力具有重要的指导意义。通过学习这本书,开发者可以...

    全面剖析C#正则表达式

    【全面剖析C#正则表达式】 在C#编程中,正则表达式是一种强大的文本处理工具,用于模式匹配和字符串查找。C#通过.NET框架提供了对正则表达式的全面支持,位于`System.Text.RegularExpressions`命名空间下。该命名...

    C#正则表达式匹配与替换字符串功能示例

    在C#编程中,正则表达式是一种强大的文本处理工具,用于搜索、匹配和替换字符串中的特定模式。本文通过实例详细介绍了C#中...在处理复杂字符串匹配和替换任务时,熟悉并掌握正则表达式及其在C#中的应用是非常有价值的。

    C#正则表达式快速入门

    ### C#正则表达式快速入门 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地完成字符串的搜索、替换等操作。对于很多初学者来说,面对像“\w+@\w+\.\w{1,3}”这样的表达式可能会感到困惑...

    02C#正则表达式编程.doc

    C#正则表达式编程是.NET框架中处理文本模式匹配的重要工具。正则表达式是一种强大的文本处理语言,能够高效地...在后续的C#正则表达式编程中,还会进一步探讨Regex类的用法,包括验证、提取、分割和替换等常见操作。

    C#正则表达式基础知识

    在C#编程语言中,正则表达式是一种强大的文本处理工具,它允许程序员通过模式匹配来...通过文档《正则表达式基础知识.doc》和《全面剖析C#正则表达式.doc》的学习,可以深入理解并掌握C#正则表达式的各种用法和技巧。

    C#正则表达式快速入门教程

    本教程旨在为初学者提供一个快速入门C#正则表达式的指南。 1. **什么是正则表达式?** 正则表达式,简称regex,是一种特殊的文本字符串,用于描述一个或多个字符模式。它们在许多编程语言中被用来搜索、验证和操作...

    关于C#正则表达式大全

    C#正则表达式是.NET框架中用于处理文本模式匹配和搜索的强大工具。它允许开发者在C#程序中执行复杂的文本处理任务,如数据验证、提取、替换和分割。正则表达式在C#中主要通过`System.Text.RegularExpressions`命名...

    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 ...

    C#和JAVA正则表达式

    在C#中,正则表达式是通过`System.Text.RegularExpressions`命名空间中的`Regex`类来实现的。例如,我们可以使用`Regex.IsMatch()`来检查一个字符串是否符合特定的模式,`Regex.Match()`和`Regex.Matches()`用于查找...

Global site tag (gtag.js) - Google Analytics