对于复杂的、符合一定规则的字符串替换来说,正则表达式无疑是强悍和高效的选择
对于正则表达式的使用,我也写过几篇帖子了,具体可以见下面的地址
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}");
为了区分分组编号和普通字符,可以用{}标注分组号
分享到:
相关推荐
- **Regex**:这是正则表达式的主要类,包含许多静态方法如`Match`、`Matches`、`Replace`、`Split`等,用于执行匹配、替换和拆分操作。 - **Match**:表示单个匹配结果,包含匹配的文本、子组等信息。 - **Group*...
3. `Replace`方法:用新的字符串替换所有匹配正则表达式的子串。 4. `Split`方法:根据正则表达式分割字符串,返回一个字符串数组。 三、构造正则表达式 使用`new Regex(pattern)`创建Regex对象,其中`pattern`是...
通过上述知识点的学习,开发者可以更有效地使用C#正则表达式进行文本处理,无论是简单的查找替换,还是复杂的模式匹配,都能得心应手。在实际开发中,结合正则测试工具,能够大大提高代码质量和开发效率。
2. 正则表达式对象:在C#中,使用`System.Text.RegularExpressions`命名空间下的`Regex`类来处理正则表达式。 3. 匹配操作:`Match`对象表示正则表达式与输入字符串的一个匹配。`Regex.IsMatch(input, pattern)`...
### C#正则表达式(RegEx)高级应用之分组(Group)替换(Replace) #### 知识点一:分组(Group)的概念与应用 **分组**是正则表达式中的一个强大特性,它允许我们将正则表达式的某个部分视为一个整体。这在很多情况下...
在C#编程语言中,正则表达式是通过`System.Text.RegularExpressions`命名空间中的类来实现的,尤其是`Regex`类。这篇文章将深入探讨C#中的正则表达式,包括其基本概念、语法、常见模式以及如何在实际项目中使用它们...
总之,《C#正则表达式编程 清华红皮书系列》将详细讲解如何在C#环境中有效地使用正则表达式,涵盖基础语法、高级特性和实践应用,对于提升C#开发者的字符串处理能力具有重要的指导意义。通过学习这本书,开发者可以...
【全面剖析C#正则表达式】 在C#编程中,正则表达式是一种强大的文本处理工具,用于模式匹配和字符串查找。C#通过.NET框架提供了对正则表达式的全面支持,位于`System.Text.RegularExpressions`命名空间下。该命名...
在C#编程中,正则表达式是一种强大的文本处理工具,用于搜索、匹配和替换字符串中的特定模式。本文通过实例详细介绍了C#中...在处理复杂字符串匹配和替换任务时,熟悉并掌握正则表达式及其在C#中的应用是非常有价值的。
### C#正则表达式快速入门 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地完成字符串的搜索、替换等操作。对于很多初学者来说,面对像“\w+@\w+\.\w{1,3}”这样的表达式可能会感到困惑...
C#正则表达式编程是.NET框架中处理文本模式匹配的重要工具。正则表达式是一种强大的文本处理语言,能够高效地...在后续的C#正则表达式编程中,还会进一步探讨Regex类的用法,包括验证、提取、分割和替换等常见操作。
在C#编程语言中,正则表达式是一种强大的文本处理工具,它允许程序员通过模式匹配来...通过文档《正则表达式基础知识.doc》和《全面剖析C#正则表达式.doc》的学习,可以深入理解并掌握C#正则表达式的各种用法和技巧。
本教程旨在为初学者提供一个快速入门C#正则表达式的指南。 1. **什么是正则表达式?** 正则表达式,简称regex,是一种特殊的文本字符串,用于描述一个或多个字符模式。它们在许多编程语言中被用来搜索、验证和操作...
C#正则表达式是.NET框架中用于处理文本模式匹配和搜索的强大工具。它允许开发者在C#程序中执行复杂的文本处理任务,如数据验证、提取、替换和分割。正则表达式在C#中主要通过`System.Text.RegularExpressions`命名...
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#中,正则表达式是通过`System.Text.RegularExpressions`命名空间中的`Regex`类来实现的。例如,我们可以使用`Regex.IsMatch()`来检查一个字符串是否符合特定的模式,`Regex.Match()`和`Regex.Matches()`用于查找...