`

高效程序员的秘密之——正则表达式

 
阅读更多

周末在知乎遇到一个问题,正则表达式的应用场景,由于手边没有电脑,于是用手机作答。好不容易码了几百字,结果不小心点击了一个超链接,悲剧了。于是周一上班第一件事儿就是继续作答。

 

正则表达式的处理对象是字符串,也就是我们经常说到的文本。主要体现在 3 个操作:

  1. 验证
  2. 查找
  3. 替换

我经常使用正则表达式的地方:

1. 写作

不管是写博客,还是写书,写项目文档,面对的都是文字(文本)。也许你辛辛苦苦写了篇介绍 javascript 的博客,却发现里面提到的网站都打不开了,原来站长为了 SEO,把连接 http://domain/1013/05/27/regular-expression.html 改成了http://domain/1013-05-27-regular-expression.html。更悲剧的是,整个网站的链接都改了。但是值得庆幸的是,这些修改是有规律的。于是,正则表达式登场。

2. 编程

比如 SQL 语句吧,我们得到了一个 sql 脚本文件,是 ansi sql,里面的语句 SELECT uname, password FROM user …… 但是我们需要把这条语句替换成:

SELECT 'uname', 'password' FROM 'user'    // MySQL
SELECT [uname], [password] FROM [user]    // SQL Server, Access
SELECT 'uname', 'password' FROM user      // ……

根据不同的 DBMS,生成不同的 SQL 方言。 于是,正则表达式登场。 

4. 偷懒

程序员都是比较懒的,科学发明也都是给懒人准备的,程序也是为了让懒人使用而开发的,正则表达式也是。正所谓:人有多大懒,才有多大闲

 

我们有这么一个 SQL:

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(10) unsigned NOT NULL COMMENT '用户ID',
  `name` varchar(255) COMMENT '用户名'
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='用户';

我们需要把它变成:

/** 用户 */
public class User {
    private int id;  // 用户ID
    private String name;  // 用户名
    ……
}


5. 快速准确提取信息


以前我在 word 中提取客户的邮箱信息时,都是查找“邮箱”、“邮件”、“email”、“e-mail”、“信箱”。反正就是把所有 Email 的同义词都所有一遍。即使这样做了,

  1. 搜索的结果不精确,比如“网易在昨天晚上升级了所有的邮件服务器”,这句话里面没有 Email 的信息,但是确有“邮件”这个词,也被搜索到了。 
  2. 漏搜。比如“如果您觉得本产品有用,请联系我:xxxx@xxxx.com”,这句话含有邮箱信息,但却没有被搜索出来。 

于是,正则表达式登场。

18
9
分享到:
评论
5 楼 rensanning 2013-05-27  
验证(Match)、查找(Find)、替换(Replace)、切分(Split)
4 楼 redis 2013-05-27  
程序员应该学习一点儿正则。
3 楼 rcx123rcx 2013-05-27  
原来如此~
2 楼 justjavac 2013-05-27  
rcx123rcx 写道
为什么没有3

我不会数数。

呵呵。

其实,是我故意的,不过忘记在后面说明了。问题是:序号没有3,能不能用正则表达式来验证序号是否都正确了?进一步,能不能用正则表达式来修正错误的序号?
1 楼 rcx123rcx 2013-05-27  
为什么没有3

相关推荐

    Python程序员必会的正则表达式

    "Python程序员必会的正则表达式" 正则表达式是一种逻辑公式,用于对字符串进行操作,包括检索、截取、替换等操作。正则表达式由特定字符和其组合组成,遵循一定的语法规则,具有很强的灵活性和功能性。 正则表达式...

    python专题——正则表达式[整理].pdf

    Python中的正则表达式是处理文本模式匹配的强大工具,它允许程序员通过简洁的语法来查找、替换或提取字符串中的特定模式。以下是对正则表达式关键概念的详细解释: 1. **简介**: - 正则表达式是用于描述字符串...

    vb正则表达式实例(正则表达式测试程序)

    在VB.NET中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许程序员通过模式匹配来处理字符串。这个“vb正则表达式实例”很可能是为了帮助开发者测试和理解正则表达式的工作原理而设计的一个应用...

    VC、VC++,MFC 正则表达式类库

    总的来说,MFC的正则表达式类库提供了一个高效且易于使用的接口,使得VC++开发者能够方便地在Windows应用程序中处理复杂文本模式。了解并熟练掌握这些类和方法,有助于提升文本处理部分的代码质量及效率。

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    正则表达式(Deelx版)是一种强大的文本处理工具,它允许程序员和用户通过预定义的模式来匹配、查找、替换或者分析字符串。Deelx版是专门为提高正则表达式性能和功能而设计的一个支持库,适用于各种编程语言和应用场景...

    qt使用正则表达式限制lineEdit的输入,对正则表达式进行了封装,可以直接引入,工程编译正常

    在Qt框架中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许程序员以结构化的方式匹配、查找、替换或验证字符串。本项目针对Qt的lineEdit组件,通过正则表达式实现了输入限制功能,使得lineEdit...

    正则表达式 必知必会 pdf

    无论是处理日志文件、数据验证、文本转换还是网络爬虫中的URL提取等,正则表达式都能提供高效、精确的解决方案。而正则表达式之所以为大多数人所知甚少,主要是因为缺乏质量高、易于理解的学习资源。不少教程或书籍...

    java正则表达式匹配工具

    正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地进行文本分析和处理。在Java中,正则表达式的使用主要依赖于`java.util.regex`包中的类,如`Pattern`和`Matcher`。 首先,我们来看`Pattern`类。这个...

    正则表达式翻译工具,RegexTest.exe

    在IT行业中,正则表达式是程序员、数据分析师、网络管理员等专业人士必备的技能之一。它们由特殊字符和普通字符组成,通过特定的语法规则来定义一个搜索模式。正则表达式可以用于多种用途,包括但不限于: 1. **...

    强大的正则表达式生成工具 C#版

    在这个“强大的正则表达式生成工具 C#版”中,我们可以期待一个专为C#开发者设计的高效、直观的工具,它能够帮助程序员快速创建、测试和调试正则表达式。 正则表达式的基本概念包括: 1. **字符集**:如`.`代表...

    c++写的正则表达式验证工具

    Boost库的正则表达式组件,即`boost::regex`,是C++实现正则表达式的常用选择之一,它提供了一套完整的API接口,使得在C++中编写正则表达式相关的代码变得相对简单。 在Visual Studio 2008环境下,开发者可以将...

    Java正则表达式.ppt

    在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式的起源可以追溯到20世纪中叶,由Warren McCulloch和Walter Pitts的神经网络理论,以及...

    正则表达式(regex)C语言源码,超强查找/替换算法

    Henry Spencer的regex library是一个经典的正则表达式库,由C语言编写,设计目的是为了提供一个高效且灵活的正则表达式引擎。它支持多种正则表达式语法,包括基本的字符匹配、量词、分组、预查以及更多的高级特性。...

    易语言正则表达式匹配中文

    易语言是一种专为中国人设计的编程语言,它以简明的中文语法,降低了编程的门槛,使得更多非专业程序员能够快速上手。在易语言中,正则表达式是进行文本处理、数据提取和搜索的关键工具,尤其在处理中文字符时显得尤...

    易语言正则表达式取网址和名称

    总之,通过易语言的正则表达式功能,我们可以高效地处理大量文本数据,提取出其中的网址和相关名称。这种方法在网页抓取、数据分析、日志分析等场景中非常常见。理解并熟练掌握正则表达式,能显著提高在易语言中处理...

    《学习正则表达式》高清扫描版 PDF

    正则表达式是程序员必备的强大工具,得到了各种Unix实用程序,以及Perl、Java、JavaScript、C#等编程语言的支持。读完本书,你会对正则表达式的常用语法了然于胸。掌握正则表达式是提升编程效率、节约时间的一大法.....

    深入浅出之正则表达式

    正则表达式是一种强大的文本处理工具,用于模式匹配和数据提取。它们在编程语言、文本编辑器、搜索引擎等各类...通过深入学习正则表达式,不仅可以提高工作效率,还能提升编程能力,是每个程序员不可或缺的技能之一。

    Java正则表达式 Java 正则表达式

    Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...

    C正则表达式库

    在C语言环境中,GUN(GNU)提供了一个官方的正则表达式库,这使得C程序员可以方便地在他们的应用程序中利用正则表达式的强大功能。本篇文章将详细探讨GUN C的正则表达式库,包括其核心组件`regex.c`和`regex.h`,...

    精通正则表达式 中英文

     《精通正则表达式(第3版)》,以明晰轻松的笔调向程序员深入浅出地讲解复杂的知识,并给出了现实世界中复杂问题的解决办法,读者能够立刻运用书中丰富的知识,巧妙而高效地解决各种问题。 此书为英文版,因为中文...

Global site tag (gtag.js) - Google Analytics