`
CharlesCui
  • 浏览: 427860 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

推荐:EditPlus+正则表达式,处理中等大小的文本

阅读更多
推荐RT,
如果哪个哥们发现了比EditPlus对正则支持的更NB的编辑器(标准正则表达式),请通知我,谢谢啊。支持非标准的正则就不要提了,如UE等。目前的EditPlus支持的正则表达式也不是很完全,比如\s空格就不支持。

为啥要文本中等大小?

太大了正则效率不高,正则表达式的执行是很消耗CPU时间的。
太小了手工改改就OK了,要是你正则不熟练,还要想半天。
文本太大的话我会用Ruby或者JS这种方便执行的脚本语言来做。

我觉得我对正则表达式的使用范围越来越广了,
而且windows下配合Editplus进行文本处理真方便。

本来刚才要写一大段的C代码,不断的重复,超级麻烦,用正则表达式把我要的URL扣出来,
然后直接嵌入进代码片段后,立刻搞定,剩下无数工作量啊。

原始文本:

 00:00:00.002	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/static/jquery-1.3.2.min.js
 00:00:00.037	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/space/js/util.js
 00:00:00.041	0.001	0	GET	(Cache)	text/css	http://w.alisoft.com/static/reset.css
 00:00:00.043	0.001	0	GET	(Cache)	text/css	http://w.alisoft.com/static/global_back.css
 00:00:00.045	0.001	0	GET	(Cache)	text/css	http://w.alisoft.com/static/index/index.css
 00:00:00.046	0.001	0	GET	(Cache)	text/css	http://w.alisoft.com/static/module/module.css
 00:00:00.048	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/static/module/module.js
 00:00:00.084	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/space/js/CookieUtil.js
 00:00:00.087	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/space/js/feed.js
 00:00:00.000	0.091	0	GET	(Cache)	text/html;charset=UTF-8	http://w.alisoft.com/space/home/homePage.do
 00:00:00.091	0.001	0	GET	(Cache)	application/x-javascript	http://img.im.alisoft.com/webim/js/website.js
 00:00:00.099	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/static/index/index.js
 00:00:00.103	0.001	0	GET	(Cache)	application/javascript	http://w.alisoft.com/static/base.js
 00:00:00.110	0.001	0	GET	(Cache)	text/plain;charset=utf-8	http://w.alisoft.com/space/layout/layout.do
 00:00:00.150	0.002	0	GET	(Cache)	text/plain;charset=utf-8	http://w.alisoft.com/space/friend/loadGroupInfo.do
 00:00:00.209	0.025	3458	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/mission/mission!cmission.do?jsoncallback=jsonp1247116589623&_=1247116589794
 00:00:00.246	0.001	0	GET	(Cache)	application/x-javascript	http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js
 00:00:00.207	0.045	13751	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/mood/homeMoodInit.do?jsoncallback=jsonp1247116589622&_=1247116589794
 00:00:00.252	0.002	0	GET	(Cache)	application/x-javascript	http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js
 00:00:00.237	0.021	2207	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForFriend.do?jsoncallback=jsonp1247116589624&_=1247116589825
 00:00:00.239	0.031	815	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForNonFriend.do?jsoncallback=jsonp1247116589625&_=1247116589825
 00:00:00.240	0.043	2207	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForFriend.do?jsoncallback=jsonp1247116589626&_=1247116589825
 00:00:00.321	0.031	10410	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/face/face.do?jsoncallback=jsonp1247116589627&_=1247116589903
 00:00:00.216	0.204	510	GET	200	text/html;charset=UTF-8	http://w.alisoft.com/space/home/homePage!homePageMessages.do?token=1247116589794
 00:00:00.287	0.422	19543	GET	200	application/x-javascript	http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js?_=1247116589872
 00:00:00.233	0.338	1229	POST	200	text/html;charset=UTF-8	http://w.alisoft.com/space/feed/portal!feedList.do?token=1247116589809
 00:00:00.224	0.618	3178	GET	200	text/html;charset=UTF-8	http://w.alisoft.com/space/friend/homePageFriendWidget.do?token=1247116589794
 00:00:00.871	0.002	492	GET	404	text/html; charset=iso-8859-1	http://amos.im.alisoft.com/mullidstatus.aw?beginnum=1&uids=


看一下啊,所有带Cache的行我都不要,这么做:

Ctrl+H,

正则表达式那里填入:

.*Cache.*


然后勾选正则表达式,替换,去掉换行符之后是这样:

00:00:00.209	0.025	3458	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/mission/mission!cmission.do?jsoncallback=jsonp1247116589623&_=1247116589794
 00:00:00.207	0.045	13751	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/mood/homeMoodInit.do?jsoncallback=jsonp1247116589622&_=1247116589794
 00:00:00.237	0.021	2207	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForFriend.do?jsoncallback=jsonp1247116589624&_=1247116589825
 00:00:00.239	0.031	815	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForNonFriend.do?jsoncallback=jsonp1247116589625&_=1247116589825
 00:00:00.240	0.043	2207	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForFriend.do?jsoncallback=jsonp1247116589626&_=1247116589825
 00:00:00.321	0.031	10410	GET	200	text/x-json;charset=UTF-8	http://apps.w.alisoft.com/apps/face/face.do?jsoncallback=jsonp1247116589627&_=1247116589903
 00:00:00.216	0.204	510	GET	200	text/html;charset=UTF-8	http://w.alisoft.com/space/home/homePage!homePageMessages.do?token=1247116589794
 00:00:00.287	0.422	19543	GET	200	application/x-javascript	http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js?_=1247116589872
 00:00:00.233	0.338	1229	POST	200	text/html;charset=UTF-8	http://w.alisoft.com/space/feed/portal!feedList.do?token=1247116589809
 00:00:00.224	0.618	3178	GET	200	text/html;charset=UTF-8	http://w.alisoft.com/space/friend/homePageFriendWidget.do?token=1247116589794
 00:00:00.871	0.002	492	GET	404	text/html; charset=iso-8859-1	http://amos.im.alisoft.com/mullidstatus.aw?beginnum=1&uids=


然后我要把里面所有http://的URL填入web_url("\2","URL=\1",LAST)之后,
\2是名字,我用每个请求最后的处理方法名代替,它位于url中的最后一个/之后,?之前。
\1是URL,带参数,http://开始到该行的结尾。

这么做:

正则表达式:

^.*(http:.*\/(.*)\?.*)$


被替换的地方:

web_url("\2","URL=\1",LAST);


替换后的文本:

web_url("mission!cmission.do","URL=http://apps.w.alisoft.com/apps/mission/mission!cmission.do?jsoncallback=jsonp1247116589623&_=1247116589794",LAST);
web_url("homeMoodInit.do","URL=http://apps.w.alisoft.com/apps/mood/homeMoodInit.do?jsoncallback=jsonp1247116589622&_=1247116589794",LAST);
web_url("poke!listPokeInfoForFriend.do","URL=http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForFriend.do?jsoncallback=jsonp1247116589624&_=1247116589825",LAST);
web_url("poke!listPokeInfoForNonFriend.do","URL=http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForNonFriend.do?jsoncallback=jsonp1247116589625&_=1247116589825",LAST);
web_url("poke!listPokeInfoForFriend.do","URL=http://apps.w.alisoft.com/apps/poke/poke!listPokeInfoForFriend.do?jsoncallback=jsonp1247116589626&_=1247116589825",LAST);
web_url("face.do","URL=http://apps.w.alisoft.com/apps/face/face.do?jsoncallback=jsonp1247116589627&_=1247116589903",LAST);
web_url("homePage!homePageMessages.do","URL=http://w.alisoft.com/space/home/homePage!homePageMessages.do?token=1247116589794",LAST);
web_url("firebug-lite-compressed.js","URL=http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js?_=1247116589872",LAST);
web_url("portal!feedList.do","URL=http://w.alisoft.com/space/feed/portal!feedList.do?token=1247116589809",LAST);
web_url("homePageFriendWidget.do","URL=http://w.alisoft.com/space/friend/homePageFriendWidget.do?token=1247116589794",LAST);
web_url("mullidstatus.aw","URL=http://amos.im.alisoft.com/mullidstatus.aw?beginnum=1&uids=",LAST);


用正则处理不大不小的文本是不是很爽?

附件是EditPlus的正则表达式帮助截图,想看就点开,最好自己下载一个玩玩。



  • 大小: 97.2 KB
分享到:
评论
20 楼 yilv99 2009-07-15  
才发现哦。。
19 楼 moyue 2009-07-15  
正则一直没开始学,但一直说要学
ps;UE支持列编辑
18 楼 night_stalker 2009-07-15  
这三点和列编辑好像大部分编辑器都支持 ……
17 楼 CharlesCui 2009-07-15  
EditPlus最让我爽的三点:
1、可以集成到鼠标右键,这样打开文件超级方便。
2、写网页的时候,Ctrl+B可以直接看到网页的结果,不用另外找个浏览器打开。
3、支持标准的正则表达式。

这三点都很重要:)

最大的遗憾:
1、不支持列编辑
16 楼 keyboard2000 2009-07-15  
用notepad++
15 楼 whaosoft 2009-07-14  
不就正则吗 2年了 都是我的弱项!~
14 楼 mikeandmore 2009-07-14  
night_stalker 写道
icefishc 写道
perl 也用 ?<name>..

我弄错了 …… ?P<name> 是 Python 的 ……

应该是Python的。。。
不过其它的我不知道。。。
13 楼 night_stalker 2009-07-14  
icefishc 写道
perl 也用 ?<name>..

我弄错了 …… ?P<name> 是 Python 的 ……
12 楼 icefishc 2009-07-14  
night_stalker 写道


引用


So how do you get from where you are to using Emacs so much you spend your spare time hacking on various Emacs libraries for fun? Mostly by making a point of using Emacs for all of your editing needs, and allowing Emacs to slowly take over your other computings tasks as well.
                 --- 十年学会emacs

嘿嘿 就是这样的
emacs 的学习过程漫长而有趣
11 楼 icefishc 2009-07-14  
night_stalker 写道

perl 的命名分组用 ?P<name>,而 ruby (1.9)用 ?<name>

perl 也用 ?<name>..
?p<name> 是python中的用法

night_stalker 写道

perl 的非捕获分组(或者说 atomic group)是用 ?>,而 ruby 用 ?:

perl 也提供用 ?:

...
10 楼 night_stalker 2009-07-14  
9 楼 icefishc 2009-07-14  
啥叫标准正则表达式。。。。。
emacs党对editplus用户表示不理解
8 楼 mikeandmore 2009-07-14  
andyyehoo 写道
editplus一直是最爱编辑器,其实其它编辑器也有比它强的,lz说的正则替换也未必没有,不过功能相当而尺寸比它小的,还真没见过,功能简洁而全面,实在是居家旅行,必备良药。

最大的愿望就是,把注册去掉,开源吧…………

emacs党表示editplus太弱了。。。
7 楼 andyyehoo 2009-07-14  
editplus一直是最爱编辑器,其实其它编辑器也有比它强的,lz说的正则替换也未必没有,不过功能相当而尺寸比它小的,还真没见过,功能简洁而全面,实在是居家旅行,必备良药。

最大的愿望就是,把注册去掉,开源吧…………
6 楼 CharlesCui 2009-07-09  
QuakeWang 写道
处理这种文件还可以用grep和sed配合使用:
cat test.log | grep '200' | sed -r 's/^.*(http:.*\/(.*)\?.*)$/web_url("\2","URL=\1",LAST);/'


Linux下能用正则表达式的地方就太多了,
记得以前坛子里一个哥们谁了,说过,“没有cut+sed搞不定的log”。
5 楼 QuakeWang 2009-07-09  
处理这种文件还可以用grep和sed配合使用:
cat test.log | grep '200' | sed -r 's/^.*(http:.*\/(.*)\?.*)$/web_url("\2","URL=\1",LAST);/'
4 楼 CharlesCui 2009-07-09  
night_stalker 写道
还是有区别的 …… 譬如
perl 和 php 的正则有递归(分组内以 (?R) 代表自己) 和 callback
perl 的非捕获分组(或者说 atomic group)是用 ?>,而 ruby 用 ?:
perl 的命名分组用 ?P<name>,而 ruby (1.9)用 ?<name>


night_stalker你啥都玩过啊:P

你发帖,我肯定都看一眼的。
3 楼 night_stalker 2009-07-09  
还是有区别的 …… 譬如
perl 和 php 的正则有递归(分组内以 (?R) 代表自己) 和 callback
perl 的非捕获分组(或者说 atomic group)是用 ?>,而 ruby 用 ?:
perl 的命名分组用 ?P<name>,而 ruby (1.9)用 ?<name>
2 楼 CharlesCui 2009-07-09  
嗯,ruby就是用了perl的正则。

java的正则好像又不同于ruby和perl。
1 楼 night_stalker 2009-07-09  
其实,vim 的 perl binding 的正则最正统 ……

相关推荐

    Editplus 正则表达式替换文本格式

    Editplus作为一款知名的代码编辑器,它具备了丰富的正则表达式支持,使得在处理文本格式转换时变得轻松高效。本文将深入探讨如何利用Editplus的正则表达式功能进行文本替换,以提升我们的工作效率。 首先,理解正则...

    EditPlus正则表达式替换字符串详解

    以上这些示例涵盖了常见的字符串验证场景,在使用EditPlus时可以根据具体需求灵活运用这些正则表达式,提高文本处理的效率和准确性。希望本文能帮助读者更好地理解和掌握正则表达式的使用技巧。

    notepad、editplus等软件常用的文本整理正则表达式

    文本整理仅仅是用记事本... 您可能感兴趣的文章:EditPlus 正则表达式 实战(3)EditPlus中的正则表达式 实战(2)EditPlus中的正则表达式 实战(1)EditPlus中的正则表达式实战(5)EditPlus中的正则表达式实战(6)php和editplus

    正则表达式、语法、editplus

    正则表达式是一种强大的文本处理工具,它通过一系列普通的字符(如 a 到 z)和特殊的字符(称为元字符)来定义一个搜索模式。这种模式被用来查找符合特定规则的字符串。正则表达式在编程语言、数据库查询、文本编辑...

    正则表达式的具体介绍.docx

    例如,著名的`EditPlus`编辑器,以及大型的开发工具如`Microsoft Word`、`Visual Studio`等,都提供了使用正则表达式处理文本内容的功能。 #### 六、总结 正则表达式作为一种强大的文本处理工具,不仅能够帮助...

    EditPlus正则表达式应用

    ### EditPlus正则表达式应用详解 #### 一、正则表达式基础知识 **1.1 基本符号** ...通过学习这些基础概念和实践操作,可以帮助用户更加熟练地掌握EditPlus中的正则表达式功能,从而提高文本处理的效率。

    正则表达式从0到入门到精通全语言语法大全

    在文本编辑软件EditPlus中,用户可以通过查找和替换功能使用正则表达式。例如,使用正则表达式删除文本中的空行可以通过查找"^\s*\r",其中^\s*匹配行开始的任意空白字符,\r代表行结束符。替换操作可以使用分组功能...

    EditPlus中的正则表达式 实战(4)

    在本篇【EditPlus中的正则表达式 实战(4)】中,我们将继续深入探讨EditPlus这款文本编辑器中正则表达式的实际应用。正则表达式是文本处理和搜索替换的重要工具,尤其在编程、数据分析和文本挖掘等领域有着广泛的应用...

    正则表达式必知必会

    正则表达式是对字符串操作...由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容

    EditPlus中的正则表达式 实战(1)

    EditPlus中的正则表达式 实战(1) EditPlus中的正则表达式 实战(2) EditPlus 正则表达式 实战(3) EditPlus中的正则表达式 实战(4) EditPlus中的正则表达式实战(5) EditPlus中的正则表达式实战(6) entity.JIANCHARQ=...

    EditPlus中的正则表达式实战(6)

    EditPlus是一个流行的文本编辑器,它支持用户利用正则表达式来处理文本数据。正则表达式(Regular Expression),是一种文本模式,包括普通字符(例如,字母或数字)和特殊字符(称为“元字符”),它们组合在一起,...

    正则表达式

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。它在IT行业中被广泛应用,尤其是在文本处理、数据验证、编程语言(如JavaScript、Python、Java等)以及各种编辑器和工具中。掌握正则...

Global site tag (gtag.js) - Google Analytics