原文地址:http://iregex.org/blog/diy-regexbuddy.html
其实RegexBuddy挺好用的,我一直用它。它的用法、好处,可以写好多文字,本站也做过介绍;不过,也有理由不用它,同时这也是撰写本文的一 个原因。我动了动脑筋,花了一点时间,已经做出雏形。现在将思路公布在这里,与各位交流一下。 它是收费软件,价格不算便宜。$39.95。Google一下,或有惊喜。
它只能用于Windows平台。虽然在ubuntu下,我会额外安装wine,仅仅是为了驱动RegexBuddy。
Mac下无法使用RegexBuddy。近来我开始使用Mac环境了,不想再为windows软件单独运行环境了。regexbuddy似乎要失 之交臂了。搜索了一下,这里 ,这里 ,找到的软件聊聊无几,性能也乏善可陈:大多仅支持JavaScript 这样比较朴素的正则,缺乏多语言、多选项的支持。 RegexBuddy出色的表现,已经将我对正则辅助软件的期望值训练得极为挑剔,一般软件难以落入老 夫的法眼了,呵呵。
没有现成的解决方案,我就考虑,如何自己DIY一个了。 像RegexBuddy一样,支持以下属性:
支持多语言正则。至少要支持Perl, Python, PHP, JavaScript吧。.Net的用得不多(只在回答别人问题时用过,不算),可以无视;
支持匹配、替换、分割(split);
支持生成代码片段;这一点很重要。我平常不会死背硬记一些电脑可以代劳的冬冬,除非经常用 经常用的,慢慢也就变成肌肉记忆了。
除此之外,它最好还能:
兼容于各种常见平台。我指的是,Win/Lin/Mac。
对于语言的支持要原生。说实话,我怀疑RegexBuddy还在用Perl5.8风格的正则。5.10中的许多新奇好用的特性,还没有在 RegexBuddy中得到支持。究其原因,RegexBuddy的作者大概是自行从头构建的Perl等正则引擎,在细节、版本上,与最新版有所差异。说 到语言,想起余晟老师的一点意见,就是思考正则问题时,先不要考虑是什么语言、版本的正则,心中要有统一的语法。我同意余老师的观点,但是也觉得,在了解 了貌似通用的正则语法基础之后,应该比较清晰地了解自己最常用的正则语言的语法细节,以及与其它语言的差异,以避免似是而非。跑题,打住。
开源,正版,免费。我们向其他人介绍正则,总得有一款可以拿得出手的工具吧?免费这条倒是不苛求,话说好软件还是应该有所回报的。
问题是,这么好的软件,到那里去找呢?找不到的话,自己想从头实现,该如何动手呢? 使用Objective-C来实现。不过,这想法没多久就像萝莉一样被推倒了。Obj-C固然是要学的,但我等不及了。RegexBuddy这类 的软件我是天天都在用。这个目标似乎比上一条还要临渴掘井。为mac平台开发了,代码至少还要为win/lin单独编译吧?再者,如果用了Obj-C,正 则引擎怎么办?从头实现?xiaofei说,要实现一个好用的正则引擎,要一个优秀的团队半年的时间。当然,Obj-C也可以调用现成的模块,这也引出了 我现在的思路。
做成网页程序,前端接收用户输入,后端使用CGI调用服务器上的原生正则引擎(perl、python),匹配、替换后展现在前端。它最大的好处 是,语言百分百原生,Native;只要网络在,打开浏览器就能用;即使没有网络,本机localhost也可用,而且更快。 JavaScript/PHP就不必劳驾CGI了,原汤化原食就可以。
话说我已经选择了第二套方案,于是就着手实现。 已经使用HTML+jQuery画出了简单的界面,实现了perl 5.10版的CGI程序,能够进行匹配、替换、分割(Split)。
未实现的功能:代码Snippets自动生成;其它语言版本的实现。
对于我自己来说,基本上已经可以使用了。我现在就正在 eat my own dog food,一边用它,一边完善它。不过要想发布出来供大家使用,还需要旷日持久的功能完善、界面美化。
截图见文章末尾。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/perl -w
use CGI;
my$counter=1;
sub cl {
$counter*=-1;
"#ff0"if$counter==1;
"#0ff"if$counter==-1;
}
sub h_color
{
my($a)=shift;
$counter*=-1;
$color=($counter".$a."";
}
my$q= CGI->new;
die"$!"unless$q;
print$q->header(- type=>"text/html; charset=UTF-8");
my$regex=$q->param("regex");
#quit immediatly if no $regex input
dieunless$regex;
my$text=$q->param("text");
my$mode=$q->param("mode");
my$x=$q->param("space");
my$action=$q->param("action");
$regex=~s/\s+//gif$x;
if($actioneq"match")
{
my$code="";
$code.='$text =~ s@$regex';
$code.='@&h_color($&)';
$code.='@eg'.$mode.';';
eval$code;
$text=~s#\n#
#g;
print$textunless$@;
}
elsif($actioneq"replace")
{
my$code="";
my$replace=$q->param("replace");
$code="\$ text =~ s:\$ regex:$replace:g;";
eval"$code";
$text=~s#\n##g;
print"$text"unless$@;
}
elsif($actioneq"split")
{
#@result=split(m@$regex@mode, $text);
my$code="";
$code.='@result=split(m@$regex@'.$mode.', $text);';
$code.='@result=grep /\S/, @result;';
$code.='my $count=@result;';
$code.='print "$count record(s) returned:";';
$code.='print "";';
$code.='print "".&h_color($_)."" foreach (@result);';
$code.='print "
《精通正则表达式》豆瓣主页:book.douban.com/subject /2154713/
互动网购买链接:www.china-pub.com/47529
发表评论
-
c语言中的字符数组与字符串
2012-07-06 09:51 8801、字符数组的定义 ... -
正则表达式
2012-07-06 09:37 755正则表达式 字 ... -
swing look and feel demo
2012-07-06 09:30 649more information : http://cid ... -
一个简单的仿sohu电视剧播放列表[脚本]
2012-07-05 20:45 619实例下载地址:http://download.csdn.n ... -
基于COM的轻量级组件技术的简单实现
2012-07-03 13:43 8390 引言 在软件开 ... -
PHP作为Flex程序的数据源
2012-07-02 10:28 566Adobe Flash Builder 4 简体中文正式版 ... -
Flex 遍历组件的实现
2012-07-02 10:28 754Flex有两个阵营组件:spark组件和mx组件,关于sp ... -
Flex + BlazeDS 学习笔记 (一) --- BlazeDS的功能原理及配置实例
2012-07-02 10:27 545BlazeDS Test Drive里面示例了主要的功能: ... -
java与flex通信
2012-07-02 10:27 658一、准备: 服务端:JDK1.5 (这个不用介绍了吧 ... -
Flex Image加载Servlet图像流处理
2012-07-01 00:04 419Image控件是Flex加载、显示图像的一个控件,当然其也 ... -
Flex初始化时加载外部XML
2012-07-01 00:04 695Flex初始化时加载外部XML配置文件 Flex项目 ... -
Flex动态加载swc和swf中的class
2012-07-01 00:04 639flex中比较少人使用相关的反射,主要原因是因为avm编译 ... -
视频聊天网站的研究、发展以及趋势(转)
2012-07-01 00:03 508此文讲述了视频聊 ... -
视频聊天网站的研究、发展以及趋势(转) ...
2012-07-01 00:03 555此文讲述了视频文件聊天网站相干的技术、发展过程和将来的发展 ...
相关推荐
总之,DIRegEx是Delphi开发者处理正则表达式任务的得力助手,其高效性和易用性使其在众多正则表达式组件中脱颖而出。通过深入学习和熟练掌握DIRegEx,开发者可以更好地应对复杂的数据处理挑战,提升软件的质量和性能...
"RegexDesigner"是一款专为设计正则表达式而打造的工具,它为开发者和非开发者提供了一个直观且实用的界面,帮助用户构建、测试和调试正则表达式。 "RegexDesigner"的主要特点和功能包括: 1. **图形化界面**:该...
而"MTracer"正是这样一款专为正则表达式使用者量身打造的工具,它极大地简化了正则表达式的测试和调试过程。 "MTracer"的核心功能在于其直观易用的界面,用户可以快速输入正则表达式,并实时查看与之匹配的文本结果...
用户可以根据自己的习惯对EditPlus进行深度定制,包括快捷键设置、代码模板、颜色主题等,打造个性化的开发环境。 9. **代码折叠与书签** 对于大型的PL/SQL程序,代码折叠功能帮助用户隐藏不需关注的部分,而书签...
这一过程通常涉及正则表达式或者更高级的HTML解析库,如HtmlAgilityPack或AngleSharp,用于更准确地定位和提取数据。 对于cnbeta、csdn和cnblog这三个网站,它们都是中国IT领域的权威平台,分别提供科技新闻、...
5. **搜索与替换**:强大的查找和替换功能,支持正则表达式,能快速定位并修改代码中的特定内容。 6. **版本控制集成**:与Git等版本控制系统集成,可以直接在记事本中进行提交、拉取、合并等操作。 7. **宏录制与...
5. **正则表达式搜索和替换**:强大的查找和替换功能,支持正则表达式,能快速定位和修改大量文本。 6. **FTP/sFTP客户端集成**:内置FTP客户端,可以直接编辑远程服务器上的文件,省去了频繁上传下载的步骤。 7. ...
3. `formValidatorRegex.js`:这个文件包含了各种预设的验证规则和正则表达式,例如邮箱、手机号码等,开发者可以直接调用,无需自己编写正则表达式。 4. `LGPL-License.txt`:这是FormValidator 4.1.3遵循的 ...
5. **正则表达式搜索与替换**:Notepad++支持正则表达式,能够进行高级搜索和替换操作,对大型文件中的特定模式进行快速定位和修改。 6. **插件支持**:Notepad++拥有丰富的第三方插件库,如NppFTP用于FTP文件传输...
6. **正则表达式搜索替换**:这一版本的Notepad++具备强大的查找和替换功能,支持正则表达式,能够帮助用户快速定位和替换文本,特别是在处理大量数据时尤为便捷。 7. **插件扩展**:Notepad++的开源特性使得其拥有...
用户可以根据自己的习惯定制工具栏,设置个人化的快捷键,打造符合个人工作流程的编辑环境。 9. **Unicode支持**: 支持Unicode编码,能够处理各种语言的文本,包括中文、日文、韩文等。 10. **文件预览**: 在...
同时,考虑到网页内容的多样性,应用还可能利用正则表达式或XPath、CSS选择器进行复杂的数据定位和提取,保证了信息抓取的准确性和高效性。 过滤和匹配功能是"资讯助手V0.52"的另一大特色。通过智能算法,该应用...
7. **正则表达式查找替换**: 强大的查找和替换功能,支持正则表达式,方便进行复杂的文本操作。 8. **无限制的撤销/重做**: 提供多级撤销和重做,确保编辑过程中的错误可以轻松修复。 9. **自定义配置**: 用户可以...
5. **增强的查找和替换**:在更大范围内进行查找和替换,支持正则表达式,让搜索更精确。 在实际开发过程中,VA X与VS2019的结合可以极大地提高开发效率,减少错误,使开发者更专注于解决问题本身。同时,由于其...
同时,它的查找/替换功能也比原生VS更加强大,支持正则表达式搜索,使得代码修改和重构变得更加便捷。 再者,该插件还包括了代码分析和重构工具。它能实时检查代码风格和潜在问题,提示可能的错误或不良实践,帮助...
同时,编辑器内置了搜索与替换功能,支持正则表达式,使得查找和修改大量代码变得轻而易举。此外,RText还具备书签功能,便于程序员标记重要的代码段,便于日后快速定位。 版本v2.5.3带来了诸多改进和修复,增强了...
- 命令解析器:根据返回的文本进行命令解析,可能涉及到正则表达式或简单的关键词匹配。 - 设备控制:根据解析的命令,调用适当的函数或方法控制ESP8266的GPIO。 - 语音合成输出:使用TTS(文本转语音)技术将...
Notepad++还支持插件扩展,如NppFTP用于文件上传下载,Git插件进行版本控制,以及正则表达式搜索和替换等,这些插件极大地扩展了Notepad++的功能。用户可以根据个人需求安装相应的插件,打造个性化的开发环境。 在...
它支持正则表达式,这使得在大量文本中定位和替换特定模式变得异常简单。对于开发者来说,这是一个非常实用的功能,能够帮助他们在代码或日志中快速定位问题。 此外,EmEditor还提供了丰富的自定义选项,用户可以...
同时,其强大的查找和替换功能,可以处理复杂的正则表达式,使得数据清理和分析变得简单。 对于办公人员,EmEditor提供了一些增强的文档处理功能,如自动缩进、多窗口并排查看、拼写检查等。这些功能使得编辑文档变...