正则表达式测试工具 Regex Tester 的使用方法
正则表达式测试工具“RegexTester”,下载地址:http://www.oschina.net/p/regex+tester 一、关于本文今天的工作中遇到了一些正则表达式,我需要检验它们是否正确,不过我对自己目测的结果又没有信心。后来我想起以前看过一个帖子《正则表达式30分钟入门教程》,里面提到过一个工具叫做“RegexTester”,不过下载下来却感到用起来比较棘手。因为是第一次用的缘故,这个软件也没有提供足够多的帮助信息。所以我下班后研究了一下这个软件的几个主要功能,研究结果记录如下。 二、关于“RegexTester”其实这个软件真正的名字叫“YART”,它是“Yet Another Regex Tester”的缩写,翻译成中文就是“另外一个正则表达式测试工具”。在Form的Title位置,写的文字是“Code Archiects Regex Tester”,说明这是给代码设计师(就是程序猿)使用的正则表达式测试工具。 三、三个基本功能1、Find功能Find功能旨在从一个源字符串(Source)中,通过给出的正则表达式(Regex),找出匹配的子串(Matches)。进入Find功能的快捷键是“Ctrl+F”,该界面包含Regex、Source、Matches三个区域。按下命令(Commands)菜单中的执行(Run),可以生成结果集,快捷键为F5。 在Regex区域中输入正则表达式,在Source区域中输入待匹配的文本,Matches区域为程序判断的结果集 Find功能的判断逻辑,表现成代码,是这个样子的: VB.NET代码: Dim re As New Regex("[0-9]{8}",RegexOptions.None) Dim mc As MatchCollection = re.Matches("text") For Each ma As Match in mc 'TODO Next C#代码: Regex re = new Regex(@"[0-9]{8}",RegexOptions.None); MatchCollection mc = re.Matches("text"); foreach (Match ma in mc) { //TODO } 这些代码是通过“生成代码”(Generate Code)功能得到的,进入该功能的快捷键为F2,这个界面可以生成VB.NET和C#两种代码,其中C#还可以在字符串前加“ @ ”符号,说明该字符串忽略其中的C#转义字符: 2、Replace功能Replace功能的作用是从一个源字符串(Source)中,通过给出的正则表达式(Regex)和替换文本(Replace),生成替换后的字符串(Report)。进入Replace功能的快捷键是“Ctrl+R”,该界面包含Regex、Replace、Source、Report三个区域。 在Regex区域中输入正则表达式,在Replace区域中输入要替换的文本,在Source区域中输入源字符串,Report区域显示替换后的字符串 Replace功能的判断逻辑,表现成代码,是这个样子的: VB.NET代码: Dim re As New Regex("[0-9]{8}",RegexOptions.None) Dim result As String = re.Replace("text") C#代码: Regex re = new Regex(@"[0-9]{8}",RegexOptions.None); string result = re.Replace("text"); 3、Split功能Split功能会将源字符串(Source)中的文本,按正则表达式(Regex)的匹配情况,分成若干子串,并返回这些子串的集合(Report) 在Regex区域中输入正则表达式,在Source区域中输入源字符串,Report区域显示分割后的各个字符串 Split功能的判断逻辑,表现成代码,是这个样子的: VB.NET代码: Dim re As New Regex("[0-9]{8}",RegexOptions.None) Dim lines() As String = re.Split("text") For Each line As String In lines 'TODO Next C#代码: Regex re = new Regex(@"[0-9]{8}",RegexOptions.None); string[] lines= re.Split("text"); foreach (string line in lines) { //TODO } 四、正则表达式选项在选项菜单(Options)下面有9个正则表达式选项 如果没有特别的说明,这些突兀的词汇会让人非常难以理解。后来我发现这9个选项来自于.NET中命名空间“System.Text.RegularExpressions”下的枚举RegexOptions。于是我进入到VS中找到了RegexOptions枚举,这些选项的实际作用可以从这个枚举的元数据文件中窥得一二: #region 程序集 System.dll,v4.0.0.0 // C:Program FilesReference AssembliesMicrosoftFramework.NETFrameworkv4.5System.dll #endregion using System; namespace System.Text.RegularExpressions { // 摘要: // 提供用于设置正则表达式选项的枚举值。 [Flags] public enum RegexOptions { // 摘要: // 指定不设置任何选项。 None = 0,// // 摘要: // 指定不区分大小写的匹配。 IgnoreCase = 1,// // 摘要: // 多行模式。 更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 Multiline = 2,// // 摘要: // 指定唯一有效的捕获是显式命名或编号的 (?<name>…) 形式的组。 这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) // 显得笨拙。 ExplicitCapture = 4,// // 摘要: // 指定将正则表达式编译为程序集。 这会产生更快的执行速度,但会增加启动时间。 在调用 System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName) // 方法时,不应将此值分配给 System.Text.RegularExpressions.RegexCompilationInfo.Options // 属性。 Compiled = 8,// // 摘要: // 指定单行模式。 更改点 (.) 的含义,以使它与每个字符(而不是除 n 之外的所有字符)匹配。 Singleline = 16,// // 摘要: // 消除模式中的非转义空白并启用由 # 标记的注释。 但是,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace // 值不会影响或消除字符类中的空白。 IgnorePatternWhitespace = 32,// // 摘要: // 指定搜索从右向左而不是从左向右进行。 RightToLeft = 64,// // 摘要: // 为表达式启用符合 ECMAScript 的行为。 该值只能与 System.Text.RegularExpressions.RegexOptions.IgnoreCase、System.Text.RegularExpressions.RegexOptions.Multiline // 和 System.Text.RegularExpressions.RegexOptions.Compiled 值一起使用。 该值与其他任何值一起使用均将导致异常。 ECMAScript = 256,// // 摘要: // 指定忽略语言中的区域性差异。 有关更多信息,请参见[<topic://cpconPerformingCulture-InsensitiveOperationsInRegularExpressionsNamespace>]。 CultureInvariant = 512,} } 这些选项可以同时选择一个或多个,.NET是通过位运算判断哪个选项起作用的。 五、编译功能在命令(Commands)菜单下的编译(Compile to Assembly)中,有一个界面可以将正则表达式编译到dll中 Name为dll文件名,Root Namespace为命名空间,编译完毕后的dll如下: 这个DLL可以被.NET程序集引用,并调用里面已经生成好的类 六、其他用法1、在文件(File)菜单的属性(Properties)中,对YART的功能有一个统一的界面进行设置,快捷键为:F4 2、在文件(File)菜单的保存(Save)和另存为(Save As)中,可以将当前的配置内容保存到*.regex文件中,实际上这是一个XML格式文件,下面是一个该类文件的内容样例: <?xml version="1.0"?> <ProjectOptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <RegexName>test</RegexName> <RegexDescription /> <RegexText>[0-9]{8}</RegexText> <ReplaceText>TSYBIUS2014</ReplaceText> <SourceText>abcd12345678efgh87654321ijhl</SourceText> <Command>Find</Command> <RegexOptions>None</RegexOptions> <Detail>Groups</Detail> <MaxMatches>1000</MaxMatches> <Sort>Position</Sort> <WordWrap>true</WordWrap> <Format>Auto</Format> <IncludeEmptyGroups>true</IncludeEmptyGroups> <Language>VisualBasic</Language> <VerbatimStrings>false</VerbatimStrings> <InstanceMethods>true</InstanceMethods> <AssumeImports>true</AssumeImports> <GenerateLoop>true</GenerateLoop> <IncludeComment>true</IncludeComment> <CopyCodeOnExit>true</CopyCodeOnExit> </ProjectOptions> 3、在文件(File)菜单的加载源字符串(Load Source)中,可以将文本从txt文件、doc文件内读取到Source输入框中,快捷键为:Ctrl+L 4、在命令(Commands)菜单下的转义字符(Escape)中,可以按正则表达式的转义字符,转义(Escape)或反转义(Unescape)字符串 5、在结果(Results)菜单下的结果集最大元素数(Max number of results)中,可以指定结果集最多有多大,默认值为1000 6、在结果(Results)菜单中给出了结果集的四种排序方式,它们分别是:
7、最后给关于界面一张特写: (这是一个用来编写和校验正则表达式、生成VB.NET/C#代码、编译dll类库的工具) 七、另一个发现(:-P)我用VS自带的反汇编工具ILDASM对这个程序的源码进行了反汇编,可以看出这个程序是用VisualBasic写的(准确来说是VB.NET)。 END (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – 多维数组枚举器是否保证所有实现的顺序相同?
- c# – Asp.Net Identity:调用REST函数GetExternalLogin时重
- 正则表达式的常用方法:
- PostgreSQL学习手册(PL/pgSQL过程语言)
- XML格式文本 与 JavaBean 相互转换
- The RSpec Book笔记《一》初步认识TDD,BDD,RSpec,Cucumber
- SAP 项目管理PS与Oracle P6对比- 多用户性和使用方便 2/5
- 机房重构未能加载文件或程序集“DAL”或它的某一个依赖项。
- 关于Redux的一些总结(一):Action & 中间件 & 异步
- MVC3/4项目开发中遇到的ajax提交Json数据到后台Controller处