深柳堂

windows下的正则式工具介绍之一:RegexBuddy

RegexBuddy

俗话说,工欲善其事,必先利其器。关于windows下的正则表达式工具,这里推荐的是:RegexBuddy和PowerGREP。在linux下,也有好用的正则表达式工具,例如grep的兄弟们,只不过是都是基于命令行的。而这两款windows下的小工具,其突出特点是可视化,允许尝试和预览,极大地方便了使用者。

RegexBuddy:网址是http://www.regexbuddy.com。在编写正则式时,它提供可视化的支持、提示、调试方面的便利;在使用正则表达式时,它无私地将正则式转换为多种语言的字串,还提供了代码输出功能。正则式助手,该称号名副其实。

基本界面

正则式的基本功能无外乎搜索和替换。在本文中,我们使用匹配Email的正则式,代码如下:

\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

此时,RegexBuddy的界面如图:

regex001

在点击“Explain Token”时,能对当前的正则式片断的作用作出详细解释,例如当你把光标移动到\b上再点击Explain Token,就会激活帮助文档,自动定位到Word Boundaries这一段。

如果想对刚才编写的这条正则式进行测试和验证,可以点击“Test”进行测试。这时,在下边的文本框输入所需要匹配测试的文字,例如dog@animals.com,匹配结果就以黄色背景色标出。在本例中,你或许没有得到正确的匹配,呵呵,那是正常的。为什么?答案见文章结尾。

regex002

拷贝粘贴

RegexBuddy能把正则式以多种字符串格式拷贝出来。还是刚才那条正则式,根据需要,它可以被拷贝为:

'\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b'    
"\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b"     
'/\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i'

具体的选项在copy菜单里,如下图所示。你不必为单双引号、正反斜线操心了。

regex004_menu

在paste菜单项中也有类似应用,不赘述。

正则式->代码

如果你想把刚才编写好的正则式应用在程序中,这里还有一个选项:Use,界面见下图:

regex004_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>之内)的文本进行了处理,使用如下正则式删除了所有的尖括号内容,只留下普通文本。

使用的正则式为:

<[^>]+>

软件界面以及运行结果请见下图。



结尾:

关于本文开头提出的小问题,细心的你或许一下子就能看出答案了!见下图:

regex003

只要选中Case insensitive选项中OK啦!如果你没有找到,或许是因为该软件是英文的,一时间您没有注意到该选项;或者您对正则式还不太熟悉。

软件下载

上文已经提到,其官网为www.regexbuddy.com,可以去下载其最新版试用。该软件为商业软件

  • 如果你偶然路过,尝新而已,那只需下载试用版即可;
  • 如果你觉得好用、准备常用、手有余钱、非正版不用,不妨花美金购买
  • 如果你喜欢它,同时你认为优秀的网络资源是应该和朋友免费分享的,从而想获得该软件的全功能免费版,好吧,我也成全你,请在本文后留言(附邮箱),我会把这个小东西的链接发给你(最新版为3.1.1,我手头的全功能版为3.1.0,也足够用了)。

下篇文章将要介绍另一款regex工具:PowerGREP,敬请期待。

本文为rex.zhasm原创,原文地址在http://iregex.org/blog/y2008/m04/d30/regexbuddyregexbuddy.html,可以在遵循CC协议的条件下转载。

[老贴整理]如何使用正则式从英文句子里提取词根

以前在chinaunix回答过这样一个问题,用到了正则表达式(而且我认为正则式解决此类问题是最合适的。)

学英语的一些例句,每句都有若干词根相同的词,例如 She swears to wear the pearls that appear to be pears. 但是每句的词根都未必相同;我希望把这些包含词根的词都标记出来,请问如何写?

这里说的词根不是原本词根的定义,只是一组字母序列,比如

9. The dust in the industrial zone frustrated the industrious man.

词根是dust或ust

10. The just budget judge just justifies the adjustment of justice.

词根是dust

11. I used to abuse the unusual usage, but now I’m not used to doing so.

词根是use,有变形

12. The lace placed in the palace is replaced first, and displaced later.

词根是lace

13. I paced in the peaceful spacecraft.

词根是pace

14. Sir, your bird stirred my girlfriend’s birthday party.

词根是ir

如果您对此问题感兴趣,请独立思考后再继续阅读本站提供的解决方法。

Read More »

Hello regex world!

2008年4月24日,一个普普通通的日子,iregex.org我爱正则式博客低调开张了。使用的平台是wordpress,面向的受众是对正则式有好感或即将有好感的网友。如果您了解并喜欢正则表达式。如果您不了解、不喜欢正则表达式。

什么是正则表达式?如果您在dos中使用过*和?这两个通配符,那你就理解一半了。正则表达式是一整套通配符。它可以像天书(貌似一堆无意义字符的组合),但也可以简洁高雅。它的作用是高效地搜索和替换字符串。与庞大的操作系统相比,它只是一个小零件。但是,这一零件的作用越来越为人所熟知,越来越不可或缺。

本站关注正则表达式。内容包括原创、转载、翻译与正则表达式有关的教程和应用文章。饭友ppip在自述中说,“因此我将坚持多原创、少转载、少翻译的原则,宁可显出自己的愚钝,也绝不借助于他人的头脑表达。”笔者欣赏这种注重提高自身修养的思想境界。但是本站的宗旨在于分享和交流,同时本人技术并非精尖,所以自矜的仅是对正则式的热爱和对技术的痴迷,因此本站会在坚持原创的同时,不排斥转载和翻译本主题的优秀文章,与各位regexers共享。本人也立志从一名regexer成长为regexist,并最终成为regex guru。

除了正则式,本站还会刊登与搜索引擎有关的文章。Google和百度改变了我们的学习、工作和生活。我们从一个信息贫乏时代跨入了信息泛滥时代。如何精准定位所需的信息,想必也是每位网友所关心的。

为了让更多的人了解、应用正则式这一好用的工具,本站还准备开设一个小型论坛(不日开放),专门用来为新手答疑解惑。首先应该声明的是,本人对于正则式只是叶公好龙,愿意组建平台并抛砖引玉,对于新手的问题知无不言言无不尽;更高深的问题,还望诸多大牛现身赐教;在讨论中相互促进,在解惑中得到提高。

本站的域名为iRegEx.org,i可以理解为I,自己,也可以理解为中文的同音字“爱”。RegEx当然是正则式的意思了。.org是非赢利性组织域名,而非.com。旨在聚拢尽可能多的同道中人,而不是攫取尽可能多的利润。当然,如果本站将来做得足够好,流量足够大,亦不排除出售广告位来达到维持平衡的可能性。我正则,爱正则,我爱正则!

做一个与正则式有关的网站,是本人的一个愿望。现在,这是得偿夙愿的开始。我想以一副长联作为本篇开场白的结语。该长联是本人在饭否上写的“自述”:

◆匹配文本,管它字母数字一次多次懒惰贪婪行首行尾,火眼金睛疏不漏
◆替换字串,任尔局部全局单行多行前瞻回顾大写小写,偷梁换柱度陈仓

希望各位网友多支持“我爱正则式”,多订阅,多评论。谢谢大家。