RegexBuddy工具的使用教程(图文)1
2009-10-14 12:14
一、什么是RegexBuddy
使用了几天,个人感觉RegexBuddy 是学习正则表达式时的比较好的帮手。它可以容易地建立你想要的正确的正则表达式。清晰地推断他人所写的复杂的正则表达式。它还可以用给出的实例字符串或文件快速地进行测试匹配,从而防止了在实际应用中出现错误。RegexBuddy会在你的源代码中根据你所应用的特殊编程语言,自动生成带有正则表达式的代码段。同时你也可以收集正则表达式到库中,以在未来重新使用。

二、获得RegexBuddy
目前最新的版本是3.2.1(图2-1),于2008129日发布的。可以在buddy/RegexBuddy的)进行最新版本的下载和正版的购买。

2-1 RegexBuddy3.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中输入下列测试文本: 90909uiuiu56464787b001a65b(每输入一个换一行,文本内容任意更换)并选择Line by line”,在此时界面如图4-1

4-1 Example
会发现匹配的字符串会被高亮显示,十分方便查与正则表达式匹配的部分!

RegexBuddyCreate”与Test”选项卡是你新建正则表达式时最有用的,一般我会按照之前选择的Side by Side Layout”样式,这样就可以同时看见这两个面板。

Create”选项卡中,可以看到对这个正则表达式的解释的一个树状展示,其中的每一个节点对照着表达式中的一个元素块,在RegexBuddy中被称为一个token,我们点击其中的一个节点,就会在我们所输入的表达式的相应部分进行着重显示。在分析他人所写的复杂的表达式的时候在这里查看会十分方便。

此选项卡中包含四个按键:
1.Explain Token”按键,打开RegexBuddy所自带的正则表达式指南,而且指向的正是你所选择的节点的正则表达式的语法规则的解释,十分方便!!
2.Insert Token”按键,会弹出一个下拉菜单(这个菜单会在以后介绍),其中包含了正则表达式里涉及的所有语法符号,可以进行选择,当然对于语法十分熟悉后,就可以不用这个菜单,直接在上面的文本输入区键入表达式了。
3.Export”按键,可以将当前的表达式导出到文本文件、HTML文件或放入到剪贴板中。
4.“打印按键,可以将当前的表达示打印出来。
俗话说,工欲善其事,必先利其器。关于windows下的正则表达式工具,这里推荐的是:RegexBuddyPowerGREP。在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,界面见下图:
在上面的matchreplace之间点击,其代码也相应自动调整;当选取不同的language时,代码也会相应调整。它支持的语言格式为:C# Delphi(NET/Win32) Java/JavaScript/ECMAScriptPCREPHPPerlPython正则匹配尖括号RealBasicRubyVB
另外,它还有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标签),此时regexbuddysplit功能就可以大显身手了。我随便打开了一个饭否网页,对其源代码中的消息部分(<div id=stream></div>之内)的文本进行了处理,使用如下正则式删除了所有的尖括号内容,只留下普通文本。

使用的正则式为:
view plaincopy to clipboardprint
1. <[^>]+> 
<[^>]+>
软件界面以及运行结果请见下图。

结尾:
关于本文开头提出的小问题,细心的你或许一下子就能看出答案了!见下图:
只要选中Case insensitive选项中OK啦!如果你没有到,或许是因为该软件是英文的,一时间您没有注意到该选项;或者您对正则式还不太熟悉。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。