• [分享]正则文本替换器(已开源)


    正则表达式的替换问题

      正则表达式,功能很强大,很多稍微专业点的编辑器都提供正则搜索,但在替换功能上,最多提供一个对捕获组的引用(用“ ”来代码第n个捕获组),很多功能都无法实现,要么敲代码,写一个特定程序来完成,要么直接手动修改,简单重复。比如下面的场景。

    3*4=?
    -6*12=?
    9*-5=?
    ……

      如何将问号替换为相乘得到的结果?

      因为正则表达式是处理文本的,无法完成数学运算,也不能执行一些编程语言里的方法,比如说判断,也无法生成序列之类的。

    解决办法——正则文本替换器

      为了解决这些平时碰到的问题,我编写了一个正则文本替换器,替换内容中,允许使用函数表达式,相当于把编程的部分封装了起来,只需要使用简单的表达式就可以完成复杂的替换,并且,实时显示匹配到的内容,和将替换为的内容。

      下面是软件的截图:

      替换表达式的格式为:

    $函数名(参数1,参数2,参数3)
    $函数名[引用别名](参数1,参数2,参数3)

      像上面的问题,使用正则表达式:

    ((-?d+)*(-?d+)=)?

      和替换表达式:

    $(1)$*($(2),$(3))

      再执行替换,就完成了。

      函数说明:$(n)表示第n个捕获组,$*(n,m)表示n和m的积

      如果需要将刚才的替换中,每行加上一个行号,则将替换表达式改成:

    $Seq(1,1)、$(1)$*($(2),$(3))

      即可生成:

    1、3*4=12
    2、-6*12=-72
    3、9*-5=-45

      函数说明:$Seq(n,m)为序列生成器,n表示起始值,m表示步增值。

      本替换器不仅能实现四则运算、求模,还可以进行字母大小写转换,进制转换(如16进制转10进制),plsql里的Nvl、Iif,还有序列生成器等。

      如果这些函数仍满足不了你的需求,还可以自己扩展,添加自己的函数,非常方便。

      软件的帮助菜单里有详细的函数说明、使用帮助,例子,还有添加自定义函数的指导。

      下载地址:https://github.com/trytocatch/RegexReplacer/raw/master/executable%20jar/RegexReplacer.jar

      注:经网友反映,jre1.6或以下运行报错,现已修正,jre1.6下可正常运行,但不能使用命名捕获组;jre1.7则可以,还是原来的下载地址


          目前该项目已开源,地址:https://github.com/trytocatch/RegexReplacer,也可在那里下载最新的可执行jar包。自认为设计得还算漂亮,欢迎fork/pull:)

  • 相关阅读:
    前端开发笔记(2)css基础(上)
    前端开发笔记(1)html基础
    <Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
    MyEclipse中搭建Struts2开发环境
    Android 投射工具和录屏工具
    似是而非的k=sqrt(n)
    算法:求比指定数大且最小的“不重复数”问题的高效实现
    巧用“异或”
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(5)
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(4)
  • 原文地址:https://www.cnblogs.com/trytocatch/p/RegexReplacer.html
Copyright © 2020-2023  润新知