Regex Match Tracer 是一款用来编写和测试正则表达式的工具软件, 本软件通过可视化的界面,可以协助你快速、正确地写出复杂的正则表达式。不仅如此,它还可进行 "忽略大小写","单行模式","多行模式","全局模式","从左向右","扩展模式" 等模式下的正则表达式测试,支持高级正则语法,例如递归匹配等。您还可以设置一个匹配起始点,方便排查表达式错误,非常的便捷,有需要的朋友可以来下载使用哦~
1、根据正则表达式语法,彩色显示表达式,使表达式便于阅读。
2、可以保存文本片段,例如表达式或者其他文本,也可以跟任意其他编辑器之前相互拖动。
3、详细记录每一个匹配结果,包含分组结果以及所花费的时间。
4、采用树和分组列表,同步显示正则表达式的结构,使复杂的表达式一目了然,长而不乱
5、可单独测试表达式中的一部分,有利于分段调试复杂的正则表达式。
1、Regex Match Tracer可以帮助您测试添加的表达式
2、可以在软件上输入一个表达式测试运行结果
3、可以建表达式复制到软件匹配测试方案
4、提供了五种匹配模式,可以根据需要在主界面勾选
5、软件测试简单,命令是可以分组的
6、捕捉的内容也是可以调整的
7、文本片段也能及时显示
8、Regex Match Tracer也可以选择从文本导入表达式
从右向左(RIGHTTOLEFT)匹配模式
DEELX 支持从右向左匹配模式,可使表达式从文本结束位置向前查找匹配。在表达式中,右侧的表达式比左侧的表达式先匹配。编写用来在“从右向左”模式下使用表达式与普通情况下使用的表达式并没有什么不同。匹配次数修饰符(*, +, {n}, ……)仍然位于被修饰部分的右侧;^ 仍然匹配文本开始;正向预搜索 (?=xxx) 仍然是向右搜索,而不是向左;分组(group)编号仍然是从左向右进行编号;等等。
需要注意的是,当使用了“从右向左”模式后,右侧的表达式会先进行匹配。这时如果使用了反向引用,那么被引用的分组(group)应该是在右侧。
比如:
递归匹配没有这个限制,不管是否是“从右向左”模式,下边的两种写法都是可以的:
反向预搜索(反向零宽度断言)
“反向预搜索”就是在匹配过程中,要求当前位置左侧的文本必须符合某个条件,格式为 (?<=xxx) 或者 (?
关于反向预搜索中包含的表达式,Perl, Java, GRETA 以及 DEELX 的细节都不相同:
DEELX 中的反向预搜索:
DEELX 采用 RIGHTTOLEFT 模式来匹配“反向预搜索”中的表达式。使反向预搜索与正向预搜索在逻辑上完全相同,而方向相反。因此,在 DEELX 中,反向预搜索与正向预搜索一样,没有长度限制。
比如,在 DEELX 引擎中:
移植简单
DEELX 全部使用模板库编写,因此没有任何 cpp 或者 lib 文件。全部代码位于一个头文件(deelx.h)中。使用时,不需要为 DEELX 创建 project,也不需要添加任何 cpp 或者静态库 lib 文件。运行时,也不依赖专门的动态库。
使用 DEELX 正则引擎时,只需要简单地添加一个 include 就可以了:
由于 deelx.h 已经直接包含到你的项目中,因此不会存在 Runtime Library 与主项目不同的问题,也不用担心会产生连接错误的问题。
兼容性
DEELX 采用纯 C++ 代码编写,没有使用任何 STL 类或者 MFC 类。DEELX 已测试能够在以下编译器及操作系统中编译:
在其他平台以及其他编译器下,我们还未进行测试。
如果您在其他的编译器或者其他系统下编译成功或者编译失败了,可以通过 regexlab@gmail.com 告诉我们,我们将非常感谢。
命名分组
DEELX 支持 Python 及 .NET 风格的命名分组。命名分组的编号顺序按照 .NET 风格。DEELX 支持以下格式的命名分组:
匹配成功后,可通过分组的命名来获取分组捕获到的内容。
DEELX 允许多个命名分组的名字相同,这时它们捕获到的内容会放在同一个分组编号下。在逻辑上,它们是同一个分组,比如: (?".*?")|(?'.*?') 。如果两个命名相同分组之间有包含关系,那么被包含的那个分组将不进行捕获,比如: (?(?d+).?) 。
此外,与命名分组相关的功能有:反向引用,递归表达式,条件表达式,以及替换操作。
条件表达式
条件表达式就是根据某个条件是否成立,来选择匹配 2 个可选表达式中的其中一个。可以用于条件表达式的条件有两种类型:
指定分组(group)是否进行了捕获。
文本中当前位置是否可以与指定表达式匹配。
条件表达式的举例及说明:
补充说明:
如果表达式为 RIGHTTOLEFT 模式,那么 (?(xxx)aa|bbb) 与 (?(?<=xxx)aa|bbb) 相同。
如果条件表达式只有一个选择项,那么这个选项是在条件成立时进行匹配。
如果条件表达式中,使用“|”进行分隔的选项多于2个,则只有第一个“|”被视为条件表达式选项分隔符。比如: (?(?=xxx)yes|no1|no2),条件成立时,匹配 yes 部分,否则匹配 "no1|no2"。
递归表达式
“递归表达式”就是对另一部分子表达式本身的引用,而不是对其匹配结果的引用。举例说明:
如果被引用的表达式又包含自身,则形成了递归引用。举例说明:
递归表达式的格式有:
防止死循环
能匹配零长度的子表达式,如果在被修饰匹配次数时被修饰为可以匹配任意次,则在很多正则引擎中,容易出现死循环。为此,DEELX 已通过技术手段,防止死循环的出现。
比如,容易出现死循环的表达式:
DEELX 匹配模式
DEELX 支持的匹配模式有:IgnoreCase, Singleline, Multiline, Global, RightToLeft, Extended 这 6 种模式以及它们的组合。
说明
IGNORECASE
匹配时忽略大小写。默认情况下,正则表达式是要区分大小写的。不管是否指定忽略大小写模式,字符类,比如 [A-Z] 是要区分大小写的。
SINGLELINE
使小数点 "." 可以匹配包含换行符(n)在内的任意字符。默认情况下,小数点只匹配换行符以外的任意字符,不匹配换行符。
MULTILINE
使 ^ 符号除了能够匹配字符串开始位置外,还能匹配换行符(n)之后的位置;使 $ 符号除了能够匹配字符串结束位置外,还能匹配换行符之前的位置。默认情况下, ^ 符号只能匹配字符串开始位置, $ 符号只能匹配字符串结束位置。
SINGLELINE 和 MULTILINE 虽然听起来相互矛盾,但却是作用在不同的地方。因此它们是可以组合使用的。
在指定了 MULTILINE 之后,如果需要仅匹配字符串开始和结束位置,可以使用 A 和 Z。
GLOBAL
使 G 可以用来匹配本次查找匹配的开始位置,对于连续的匹配来说,也就是上次匹配的结束位置。默认情况下, G 没有作用。
DEELX 在进行替换操作(Replace)时,不管是否指定 GLOBAL 模式,DEELX 都可以进行所有的替换。是否指定 GLOBAL 模式只是对 G 起作用。如果希望进行有限次数的替换,可在替换操作时指定替换次数。
RIGHTTOLEFT
从右向左的进行匹配。从被匹配字符串的结束位置向前进行查找匹配,同时,在表达式中也是右侧的表达式先进行匹配。
表达式的写法仍然按原来的习惯:匹配次数修饰符(*, +, {n}, ……)仍然位于被修饰部分的右侧而不是左侧;^ 仍然匹配文本开始而不是文本结束;(?=xxx) 仍然是正向与搜索(向右预搜索),而不是向左;分组(group)编号仍然是从左向右进行编号;等等。
不管整个表达式是否指定了 RightToLeft 模式,"反向预搜索(反向零宽度断言)" 内的表达式始终采用 RightToLeft 模式。
EXTENDED
使 DEELX 忽略表达式中的空白字符,并且把从 # 开始到该行行末的内容视为注释。默认情况下,正则表达式中的空格,换行等字符将可以匹配相应的字符。指定了 EXTENDED 模式后,如果要在正则表达式中表示空白字符比如空格符号(space)时,应该用 x20 表示,如果要在表达式中表示 # 符号,应该用 # 表示。
不管是否指定了 EXTENDED 模式,括号内以 ?# 号开始时,比如(?# xxx ),那么这一对括号以及包含的内容都始终作为注释而被忽略。
同类推荐
2022-05-30
立即下载2022-06-18
立即下载2022-08-20
立即下载2022-08-23
立即下载2022-08-31
立即下载2022-09-18
立即下载相关文章
如何卸载PHPnow?
2023-01-02360软件管家设置安装位置的技巧
2022-12-11优酷如何上传视频?优酷上传视频的方法
2022-12-11草图大师如何调整图纸背景颜色?
2022-12-04如何在WinSCP中配置并打开Putty?
2022-11-2611对战平台如何创建自己的地图?
2022-11-26网易大神App绑定手机号的方法
2022-11-26After Effects制作文字逐行效果的方法
2022-11-12DiskGenius如何合并分区?DiskGenius合并分区的技巧
2022-03-09坚果云如何给文件添加书签?坚果云给文件添加书签的技巧
2022-01-14