【正则表达式测试工具】使用正则表达式快速找出两列数据中不同的行

180 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

例如像下面的这样的一堆海量数据(已省略部分),可能有几千组,在不编程的情况下如何快速找到不同的行?可能excel有办法,但是处理起来应该没我这样方便的。

b_start	b_end
100790	100790
100729	100729
100703	100703
100717	100717
100707	100707
100694	100999
100640	100640
100633	100633
100620	100620
.
.
.

首先我们打开“正则表达式测试工具”,把上面的数据复制到软件里,然后输入正则表达式:

^(\d+)\t\1\r\n

最后点击“全部替换”按钮,然后结果一下子就出来了!简单吧?比你的什么excel简单方便多了吧。原理其实也简单,就是把相同的组都删除掉,剩下的就是我们要的结果了。

介绍下这个神器“正则表达式测试工具”,其实市面上这样的软件有很多,但是我对它们都不满意,于是自己用vb6写了个,集成了数据采集,数据筛选替换于一体,还可以Ctrl+R呼出常用快捷表达式,可以自己扩充,还支持连续替换。

最关键的是,它对vb编程者特别照顾,在软件界面空白处快速左击3下即可生成代码。比如上面的框框的,三击后直接粘贴是这样的,是不是很神奇:

'此代码由http://blog.csdn.net/sysdzw/article/details/6141844正则测试工具  v1.1.43”自动生成,请直接调用TestReg过程
Private Sub TestReg()
    Dim strData As String
    Dim reg As Object
    strData = "b_start	b_end"  &  vbCrLf  & _
              "100790	100790"  &  vbCrLf  & _
              "100729	100729"  &  vbCrLf  & _
              "100703	100703"  &  vbCrLf  & _
              "100717	100717"  &  vbCrLf  & _
              "100707	100707"  &  vbCrLf  & _
              "100694	100999"  &  vbCrLf  & _
              "100640	100640"  &  vbCrLf  & _
              "100633	100633"  &  vbCrLf  & _
              "100620	100620"
    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.IgnoreCase = False
    reg.MultiLine = True
    reg.Pattern = "^(\d+)\t\1\r\n"
    Debug.Print reg.Replace(strData, "")
End Sub

更多详细介绍: 正则表达式测试工具 for vb6_无·法的博客-CSDN博客