网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 正则表达式 > 正文

正则基础之环视Lookaround

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
{ 0, 12, 123, 1234, 12345, 123456, 1234567, 123456789, 1234567890, 12.345, 123.456, 1234.56, 12345.6789, 123456.789, 1234567.89, 12345678.9 };

foreach (double d in data)

{

richTextBox2.Text += "源字符串:" + d.ToString().PadRight(15) + "格式化:" + Regex.Replace(d.ToString(), @"(?<=\d)(?<!\.\d*)(?=(?:\d{3})+(?:\.\d+|$))", ",") + "\n";

}

输出结果:

源字符串:0 格式化:0

源字符串:12 格式化:12

源字符串:123 格式化:123

源字符串:1234 格式化:1,234

源字符串:12345 格式化:12,345

源字符串:123456 格式化:123,456

源字符串:1234567 格式化:1,234,567

源字符串:123456789 格式化:123,456,789

源字符串:1234567890 格式化:1,234,567,890

源字符串:12.345 格式化:12.345

源字符串:123.456 格式化:123.456

源字符串:1234.56 格式化:1,234.56

源字符串:12345.6789 格式化:12,345.6789

源字符串:123456.789 格式化:123,456.789

源字符串:1234567.89 格式化:1,234,567.89

源字符串:12345678.9 格式化:12,345,678.9

实现分析:

首先根据需求可以确定是把一些特定的位置替换为“,”,接下来就是分析并找到这些位置的规律,并抽象出来以正则表达式来表示。

1、 这个位置的左侧必须为数字

2、 这个位置右侧到出现“.”或结尾为止,必须是数字,且数字的个数必须为3的倍数

3、 这个位置左侧相隔任意个数字不能出现“.”

由以上三条,就可以完全确定这些位置,只要实现以上三条,组合一下正则表达式就可以了。

根据分析,最终匹配的结果是一个位置,所以所有子表达式都要求是零宽度。

1、 是对当前所在位置左侧附加的条件,所以要用到逆序环视,因为要求必须出现,所以是肯定的,符合这一条件的子表达式即为“(?<=\d)

2、 是对当前所在位置右侧附加的条件,所以要用到顺序环视,也是要求出现,所以是肯定的,是数字,且个数为3的倍数,即“(?=(?:\d{3})*)”,到出现“.”或结尾为止,即“(?=(?:\d{3})*(?:\.|$))

3、 是对当前所在位置左侧附加的条件,所以要用到逆序环视,因为要求不能出现,所以是否定的,即“(?<!\.\d*)

因为零宽度的子表达式是非互斥的,最后匹配的都是同一个位置,所以先后顺序是不影响最后的匹配结果的,可以任意组合,只是习惯上把逆序环视写在左侧,顺序环视写在右侧。

  • 上一篇资讯: 正则基础之\b单词边界
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师