×用微信扫描并分享

正则表达式 – 超强的字符处理工具

35
1 Star2 Stars3 Stars4 Stars5 Stars(快来投票)
Loading...

正则表达式不是一个软件,但是它是从软件中独立出来的一种概念,同时也是一种工具。相信使用 unix 的朋友是不用再介绍的,但是对于长期使用 windows 的朋友,对这个工具也许是很陌生的。

为什么有些人喜欢用 Gvim/vim,认为 vim 是王道?

因为 vim 是支持正则表达式最好的编辑工具之一。真是因为正则表达式本身就很强大,只要一个软件加入了这个正则表达式,那这个软件也就随之强大起来。因为正则表达式可以让你变成字符魔术师,文档字符任你玩弄。

正则表达式是什么呢?

简单的讲,就是模糊表述你要找的字符。如果你了解 DOS 命令中的通配符 ‘?’ 和 ‘*’ 就很好理解了,它就是一个增强型的字符通配符。

它的历史可以追溯到 50 年代之前,第一次应用大概是 1966 年在 unix 开发的 QED 编辑器上。

虽然在电脑技术发展历史上,正则表达式显得非常的古老,但是如今一些新的应用 (如 Google 代码搜索,广告过滤等),使得它展示出来新的活力。

它虽然需要一些时间学习,但是上手不难,可以说如果你愿意花上一天时间去学习,相信一生都十分受用(只要电脑还存在着)。

我是在学习 perl 的时候遇到正则表达式的问题,开始学习也是比较反感,但后来做作业,用来处理字符的时候,才发现它是如此的强大,并喜欢上了这个工具,但一直以为只是 perl 的一个部分,后来逐渐发现,现代的高级编程语言基本都包含了正则表达式工具。这时我才开始注意这个超强的字符处理工具。

如今的应用可以说数不胜数了,我大概研究了一下,正则表达式有以下主要应用

1. 字符/数据 匹配

2. 字符/数据 搜索

3. 字符/数据 替换

4. 字符/数据 提取

5. 字符/数据 过滤

(其实 4,5 就是 3 的一种特定的应用)

常见用到正则表达式的软件:(主要是我用到过的)

1. 编辑器 (搜索/替换,另外加排版功能)

Gvim, JCreator (java 编辑器)

2. 浏览器(主要功能是过滤广告)

maxthon,firefox

3. 搜索引擎 (主要是搜索资料)

google code搜索

至于编程语言,正则表达式基本上已经是现代高级编程语言的一个必带的工具,像 java,javascript,perl,php 等等,都有正则表达式的字符处理应用。

所以只要你学会了正则表达式的规则,那是受用无穷,到处可以使用,很实用的电脑应用能力。

对于普通喜欢上网的朋友,不编程,不排版文档,那么正则表达式则可能对于你最主要的功能就是广告过滤了。

相信各位饱受网络广告之苦。正是由于所有网页其实都是由字符组成的,所以正则表达式绝对可以派上用处。

如果你下载的万能广告过滤不起作用的时候,就可以自己利用正则表达式来制作一条过滤规则,将广告通通清除。

所以说如今正则表达式的应用是越来越广了,已经从 unix 走向了 windows 了,相信不久将成为一种电脑技术的通用标准。

就是不要学习,最好也要知道一下。至于教程,网上无数,我这里也只是介绍这个工具。

下图是我用 maxthon 的正则表达式过滤器处理的一个网页,大家看看有什么玄机在里面哈哈

×用微信扫描并分享

已有 35 条评论, 我要留言

  1. badblue说道:

    看不懂呀,看样子要经常来!

  2. scavin说道:

    这篇只是介绍正则表达式,并没有给出教程或者使用方法。
    想学习的话还是需要自己动手的

  3. 偶爱偶家说道:

    这那还是过滤啊, 整个把baidu给替换了. 还把”百度一下”改成了”谷歌一下”, 强人

  4. shalalal说道:

    我制作了一个正则表达式的教程,有意者可与之共享!

    询:shalalahoo@yahoo.com.cn

  5. tubiebility说道:

    建议博主静下心来,好好看看自动机理论,看完你就不会像现在这样土鳖了,看到什么都大呼小叫的。不就是有穷自动机嘛,说的天上有地下无的。把图灵机搬出来你还不得吓死。

  6. islet8说道:

    汗,我在GR里猛的一看还以为是google黑板报的post。。。

  7. 正则表达式 – 超强的字符处理工具…

    正则表达式不是一个软件,但是它是从软件中独立出来的一种概念,同时也是一种工具。相信使用 unix 的朋友是不用再介绍的,但是对于长期使用 windows 的朋友,对这个工具也许是很陌生的。…

  8. 罂粟说道:

    同意tubiebility的……建议先了解formal syntax、finite automata、regular language、regular expression等概念……

  9. 李二嫂的猪说道:

    1)Ctrl+F;
    2)Input “tubie.+吓死。”;
    3)Press Delete key.

  10. F说道:

    楼主作为俺们东大计算机的学生,
    不应该对正则表达式这么震惊啊

    至少大一学离散(好像还是系主任主讲)的时候,就应该见过吧

  11. guoxl说道:

    看到图片中地址栏的上方有一行文档,不知是怎样加上去的,我是windows XP操作系统,也能加上去吗,盼回复!

  12. lxltop说道:

    最后那张图片是保存在google的Page Creator里面的吗?

  13. scavin说道:

    @F 这篇文章的作者貌似不是东大的。。。

  14. scavin说道:

    @lxltop 存在 picasa 上面的

  15. cookie说道:

    emacs rocks!

    为什么一定要中文阿?

  16. 未雨说道:

    日常很少有机会用得到,学过就忘了.

  17. caoglish说道:

    抛砖引玉而已,看样子似乎在小众软件里面介绍软件要有被认为火星人的心理准备.难道小众软件介绍的软件,一定是要所有人都没有见识过的超新星软件,才能满足所有人胃口.

    我介绍正则表达式,只是因为发现它开始走向普通软件,有了越来越多的应用,已经不再是程序员的特有的高级工具了.而且我知道正则表达式也不过半年,却在多方面应用到,所以发表一下感慨并推荐而已.我想很多小众软件的读者可能只是普通电脑使用者而已,所以介绍一下.

  18. scavin说道:

    受众不同吧。小众的读者里喜好新奇软件的偏多

    这样的文章其实对我也是比较受用的。

  19. caten说道:

    我看主要还是文字方面的问题 文章如果写得像是大家都不知道这个东西 而你自己是作为老师来教学生的话 就会引起别人的反感
    就像电视里面经常说:说起XXX,您一定没听说过。 这样的话会让很多的观众反感 凭什么你觉得我没听说过-__,-
    遣词方面注意下吧

  20. Fwolf说道:

    唉,他要不这么说,你们不是还在潜水嘛
    醉翁之意不在酒啊,高

  21. scavin说道:

    哈哈,有趣

  22. caoglish说道:

    会正则表达式的人并不要看这个文章,因为我的文章本来就是给不了解,和没有用过的人看的.而且而且我的文章不设计任何技术性的文字,就只是表述和介绍,以及自己使用后的感想而已,所以了解的人不需要看这篇文章的.

    我的一个同学和我说过,数据库以及xml处理,正则表达式,是现代编程语言必须支持的功能,前面两个不用多说,被炒烂的概念.但是对于正则表达式这个古老而强大的语法却一直被忽视,我只是对其表述遗憾.

    我看很多编程教程(perl教程除外),对数据库,xml处理可以说是大篇幅描述,但是对正则表达式确实一两页带过,其实介绍的少,正可以说明它的语法比较简单,不复杂,但也正因为介绍少,让人以为这个东西没有必要去学习,或者所学习价值不高,以至于很多人基本上都忽视了这个实用而强大的工具.所以我专门提出来,说明一下,让更多人注意这个工具而已.

  23. Fwolf说道:

    回想起来,我在学php之前真的是对正则一无所知啊
    好在这已经是好多年以前的事情了

  24. Paveo说道:

    好东西.

  25. 蒜皮说道:

    呵..学习学习

  26. 飞羽说道:

    正所谓用谷歌百度一下。

  27. netwjx说道:

    正则 在西方大学 非计算机系的 属于必修课

    另 下面 回复的说关于有穷自动机之类的 对于非搞技术的人来说 离的太远 只能了解 深入太难

  28. […] 正则表达式 – 超强的字符处理工具 | 小众软件 – Applications Inn (tags: IT) […]

  29. paradox说道:

    嗯嗯 分享无错~ 分享万岁~~

  30. dofy说道:

    能介绍个正则测试的小酷软吗?

  31. 里八神说道:

    因为这篇文章才让自己一个外贸土鳖认识了正则,在以后日子受益良多,今天在翻旧文的时候看见这些回复,特地来还愿一下。

  32. 智慧说道:

    以后我也要认真学习一下正则表达式,太有用了

  33. hacal说道:

    有没有免费的好一点的正则表达式工具呢?

  34. lecsven说道:

    正则表达式在不少地方都会看到,不过真的不了解,学一下吧

有不同想法?说说看(首次评论会被人工审核,请耐心等待)