精华帖 (1) :: 良好帖 (4) :: 新手帖 (14) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-09
最后修改:2009-07-09
如果哪个哥们发现了比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的正则表达式帮助截图,想看就点开,最好自己下载一个玩玩。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-09
其实,vim 的 perl binding 的正则最正统 ……
|
|
返回顶楼 | |
发表时间:2009-07-09
嗯,ruby就是用了perl的正则。
java的正则好像又不同于ruby和perl。 |
|
返回顶楼 | |
发表时间:2009-07-09
还是有区别的 …… 譬如
perl 和 php 的正则有递归(分组内以 (?R) 代表自己) 和 callback perl 的非捕获分组(或者说 atomic group)是用 ?>,而 ruby 用 ?: perl 的命名分组用 ?P<name>,而 ruby (1.9)用 ?<name> |
|
返回顶楼 | |
发表时间:2009-07-09
night_stalker 写道 还是有区别的 …… 譬如 perl 和 php 的正则有递归(分组内以 (?R) 代表自己) 和 callback perl 的非捕获分组(或者说 atomic group)是用 ?>,而 ruby 用 ?: perl 的命名分组用 ?P<name>,而 ruby (1.9)用 ?<name> night_stalker你啥都玩过啊:P 你发帖,我肯定都看一眼的。 |
|
返回顶楼 | |
发表时间:2009-07-09
处理这种文件还可以用grep和sed配合使用:
cat test.log | grep '200' | sed -r 's/^.*(http:.*\/(.*)\?.*)$/web_url("\2","URL=\1",LAST);/' |
|
返回顶楼 | |
发表时间:2009-07-09
最后修改: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”。 |
|
返回顶楼 | |
发表时间:2009-07-14
editplus一直是最爱编辑器,其实其它编辑器也有比它强的,lz说的正则替换也未必没有,不过功能相当而尺寸比它小的,还真没见过,功能简洁而全面,实在是居家旅行,必备良药。
最大的愿望就是,把注册去掉,开源吧………… |
|
返回顶楼 | |
发表时间:2009-07-14
andyyehoo 写道 editplus一直是最爱编辑器,其实其它编辑器也有比它强的,lz说的正则替换也未必没有,不过功能相当而尺寸比它小的,还真没见过,功能简洁而全面,实在是居家旅行,必备良药。
最大的愿望就是,把注册去掉,开源吧………… emacs党表示editplus太弱了。。。 |
|
返回顶楼 | |
发表时间:2009-07-14
啥叫标准正则表达式。。。。。
emacs党对editplus用户表示不理解 |
|
返回顶楼 | |