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

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说道:

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

有不同想法?说说看