RegexBuddy工具的使用教程(图文)1
2009-10-14 12:14
一、什么是RegexBuddy 使用了几天,个人感觉RegexBuddy 是学习正则表达式时的比较好的帮手。它可以容易地建立你想要的正确的正则表达式。清晰地推断他人所写的复杂的正则表达式。它还可以用给出的实例字符串或文件快速地进行测试匹配,从而防止了在实际应用中出现错误。RegexBuddy会在你的源代码中根据你所应用的特殊编程语言,自动生成带有正则表达式的代码段。同时你也可以收集正则表达式到库中,以在未来重新使用。 二、获得RegexBuddy 目前最新的版本是3.2.1(图2-1),于2008年12月9日发布的。可以在buddy/(RegexBuddy的)进行最新版本的下载和正版的购买。 图2-1 RegexBuddy的3.2.1版 三、初步认识RegexBuddy 安装比较简单(略过) 首先,我们先对RegexBuddyg 产生一个整体的初步的认识,而不是设法解释所有的东西。RegexBuddyg是相当易懂的容易的,所以我想经过简单大家应该能够基本正确地使用它。 默认情况下,RegexBuddy会在顶部显示正则表达式和上一次使用的历史,如图2-1。 图3-1 RegexBuddy的顶部 底部会显示7个选项卡,分别是“Create”、“Test”、“Debug”、“Use”、“Library”、“GREP”、“Forum”(需要注册才能使用此功能),如图2-2。 图3-2 RegexBuddy的底部 如果你的显示器较大,也可以分成两块平铺,你可以单击窗口最右上方工具栏上的“View”按键,在菜单中选择“Side by Side Layout”,这样你可以最大限度的同时查看两个窗口(图3-4)。 图3-3 Side by Side 样式 四、开始建立第一个正则表达式 接下来我们来用RegexBuddy来建立一个简单的正则表达式,以进一步加深对它的了解。 我们在文本域中直接输入:“^[0-9]*$”,也就是只允许有数字的正则表达式,然后在Test中输入下列测试文本: 90909、uiuiu、56464、787b、001、a65b(每输入一个换一行,文本内容任意更换)并选择“Line by line”,在此时界面如图4-1: 图4-1 Example 会发现匹配的字符串会被高亮显示,十分方便查与正则表达式匹配的部分! RegexBuddy中“Create”与“Test”选项卡是你新建正则表达式时最有用的,一般我会按照之前选择的“Side by Side Layout”样式,这样就可以同时看见这两个面板。 在“Create”选项卡中,可以看到对这个正则表达式的解释的一个树状展示,其中的每一个节点对照着表达式中的一个元素块,在RegexBuddy中被称为一个“token”,我们点击其中的一个节点,就会在我们所输入的表达式的相应部分进行着重显示。在分析他人所写的复杂的表达式的时候在这里查看会十分方便。 此选项卡中包含四个按键: 1.“Explain Token”按键,打开RegexBuddy所自带的正则表达式指南,而且指向的正是你所选择的节点的正则表达式的语法规则的解释,十分方便!! 2.“Insert Token”按键,会弹出一个下拉菜单(这个菜单会在以后介绍),其中包含了正则表达式里涉及的所有语法符号,可以进行选择,当然对于语法十分熟悉后,就可以不用这个菜单,直接在上面的文本输入区键入表达式了。 3.“Export”按键,可以将当前的表达式导出到文本文件、HTML文件或放入到剪贴板中。 4.“打印”按键,可以将当前的表达示打印出来。 |
俗话说,工欲善其事,必先利其器。关于windows下的正则表达式工具,这里推荐的是:RegexBuddy和PowerGREP。在linux下,也有好用的正则表达式工具,例如grep的兄弟们,只不过是都是基于命令行的。而这两款windows下的小工具,其突出特点是可视化,允许尝试和预览,极大地方便了使用者。 RegexBuddy:网址是buddy。在编写正则式时,它提供可视化的支持、提示、调试方面的便利;在使用正则表达式时,它无私地将正则式转换为多种语言的字串,还提供了代码输出功能。正则式助手,该称号名副其实。 基本界面 正则式的基本功能无外乎搜索和替换。在本文中,我们使用匹配Email的正则式,代码如下: view plaincopy to clipboardprint 1. \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b 此时,RegexBuddy的界面如图: 在点击“Explain Token”时,能对当前的正则式片断的作用作出详细解释,例如当你把光标移动到\b上再点击Explain Token,就会激活帮助文档,自动定位到Word Boundaries这一段。 如果想对刚才编写的这条正则式进行测试和验证,可以点击“Test”进行测试。这时,在下边的文本框输入所需要匹配测试的文字,例如dog@animals,匹配结果就以黄背景标出。在本例中,你或许没有得到正确的匹配,呵呵,那是正常的。为什么?答案见文章结尾。 拷贝粘贴 RegexBuddy能把正则式以多种字符串格式拷贝出来。还是刚才那条正则式,根据需要,它可以被拷贝为: view plaincopy to clipboardprint 1. '\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b' 2. "\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b" 3. '/\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i' '\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b' --editorbr-- "\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b" --editorbr-- '/\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i' 具体的选项在copy菜单里,如下图所示。你不必为单双引号、正反斜线操心了。 在paste菜单项中也有类似应用,不赘述。 正则式->代码 如果你想把刚才编写好的正则式应用在程序中,这里还有一个选项:Use,界面见下图: 在上面的match和replace之间点击,其代码也相应自动调整;当选取不同的language时,代码也会相应调整。它支持的语言格式为:C# 、Delphi(NET/Win32) 、Java/JavaScript/ECMAScript、PCRE、PHP、Perl、Python、正则匹配尖括号RealBasic、Ruby、VB 另外,它还有function选项,分别用以实现下述功能: If/else branch whethe the regex matches (part of) a string. If/else验证正则式是否匹配字串(的一部分)。 最常用的功能。 If/else branch whethe the regex matches a string entirely. If/else验证正则式是否匹配整条字串。 Get the part of a string matched by the regex. 取得字串中与正则式匹配的部分。Get the part of a string matched by a capturing group. 取得字串中所匹配的捕获组。这一条我也是刚刚知道,很有用哟。 Get an array of all regex matches in a string.将字串中所有的匹配保存到数组中。 Iterate over all matches in a string。列出字串中所有的匹配项。(例如,在使用正则式’\w’来匹配字串’abc’时,本function列出的内容为’a',’b',’c’.)。单词iterate的含义是重复。 Comment with RegexBuddy’s regex tree. RegexBuddy的正则树的注释。 文本分割split 如果需要处理的文本是以某种分隔符隔开的,而该种分隔符恰好又能使用正则式描述,(例如html标签),此时regexbuddy的split功能就可以大显身手了。我随便打开了一个饭否网页,对其源代码中的消息部分(<div id=“stream”>与</div>之内)的文本进行了处理,使用如下正则式删除了所有的尖括号内容,只留下普通文本。 使用的正则式为: view plaincopy to clipboardprint 1. <[^>]+> <[^>]+> 软件界面以及运行结果请见下图。 结尾: 关于本文开头提出的小问题,细心的你或许一下子就能看出答案了!见下图: 只要选中Case insensitive选项中OK啦!如果你没有到,或许是因为该软件是英文的,一时间您没有注意到该选项;或者您对正则式还不太熟悉。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论