首页 > 其他分享 >正则分组替换

正则分组替换

时间:2023-02-14 10:26:06浏览次数:38  
标签:string Text System RegularExpressions 正则 分组 替换

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

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

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}");

标签:string,Text,System,RegularExpressions,正则,分组,替换
From: https://www.cnblogs.com/dux2013/p/17118763.html

相关文章

  • mysql、oracle 分组查询,每组取一条数据
    1.情景展示有这样一种需求:将数据按照机构进行分组,然后取每个机构下只取一条记录,如何实现?2.mysql分组查询出来某字段,然后和原来的表进行关联查询。方式一:通过内连接来实现查......
  • 分组统计(group by having)
    CREATETABLEdept(deptnoMEDIUMINTNOTNULLDEFAULT'0',dnameVARCHAR(20)NOTNULLDEFAULT'',locVARCHAR(13)NOTNULLDEFAULT'');INSERTINTO......
  • spark中的聚合操作和分组操作
    聚合操作注意:任何的聚合操作都有默认的分组,聚合是在分组的基础上进行的。比如,对整体进行求和,那么分组就是整体。所以,在做聚合操作之前,一定要明确是在哪个分组上进行聚合操......
  • 分组柱状图
    <!--分组柱状图--><template><divclass="chartBox"><!--echart图标--><divid="histogram"ref="histogram"></div></div></template><script>//引入基本模......
  • Java Stream分组groupBy后,取某个字段值为字符串或者list
    某个字段值为字符串List<User>userList=newArrayList();Map<String,String>collect=userList.stream().collect(Collectors.groupingBy(User:......
  • 1234.replace-the-substring-for-balanced-string 替换子串得到平衡字符串
    问题描述1234.替换子串得到平衡字符串解题思路利用两个指针left,right,right从0开始遍历,如果[left,right]之外的字符串中,每个字符出现次数都小于或等于n/4,说明替换[lef......
  • logstash mutate gsub 正则替换内容
    记录下,网络设备默认有些日志内容无用,用正则替换删除input{    udp{host=>"127.0.0.1"port=>515type=>"Hillstone"}}filter{  mutate{   ......
  • mysql按照日期字段分组统计表数据
    问题描述测试表如下:上面的日期是精确到日的,我现在要按照年月来将上表的数据分组统计,并求出number的平均值。例:查出wellid='001’每月的number平均值sql语句关键词:日期字......
  • mysql多字段分组
    文章目录​​mysql多字段分组​​​​groupby语法​​​​多字段分组​​​​GROUPBY与ORDERBY一起使用(分组排序)​​​​使用having过滤分组​​mysql多字段分组group......
  • 低成本运维软件WGCLOUD - 主机分组管理介绍使用
    有时候我们主机比较多,不同的项目想进行分组管理WGCLOUD监测平台是支持分组的,不过默认没有启用该功能,只要修改个配置项就可以使用主机分组了在server/config/application.yml......