一、用途
正则表达式的用途不外乎两种情况:一种是查找特定的信息,另一种是查找并编辑特定的信息,从根本上来讲就是搜索和替换。给定一个正则表达式,它要么匹配一些文本(进行一次搜索),要么匹配并替换一些文本(进行一次替换)。
请注意,“相等”(equality)测试(比如说,用户给出的电子邮件地址是否匹配这个正则表达式)本质上也是一种搜索操作,这种搜索操作会对用户所提供的整个字符串进行搜索以寻找一个匹配。与此相对的是子串搜索,这是搜索的惯常含义。
MySQL 中对应的函数为:
- 子串搜索:regexp_substr
- 相等测试:regexp_like
- 匹配替换:regexp_replace
二、定义
简单地说,正则表达式是一些用来匹配和处理文本的字符串。正则表达式是用正则表达式语言创建的,与其他程序设计语言一样,正则表达式语言也有必须要学习的特殊语法和指令。正则表达式语言并不是一种完备的程序设计语言,它甚至算不上是一种能够直接安装并运行的程序或实用工具。更准确地说,正则表达式语言是内置于其他语言或软件产品里的“迷你”语言。现在几乎所有的语言或工具都支持正则表达式。正则表达式语言虽然也被称为一种语言,但它与人们对语言的印象相去甚远。
三、使用
正如前面解释的那样,不存在所谓的正则表达式程序。它既不是可以直接运行的应用程序,也不是可以从哪里购买或下载下来的软件。在绝大多数的软件产品、编程语言、实用工具和开发环境里,正则表达式语言都已被实现。正则表达式的使用方法和具体功能在不同的应用程序/语言中各有不同。一般来说,应用程序大多通过菜单选项和对话框来使用正则表达式,而程序设计语言大都通过函数、类或对象提供正则表达式功能。此外,并非所有的正则表达式实现都是一样的。在不同的应用程序/语言里,正则表达式的语法和功能往往会有明显(有时也不那么明显)的差异。
使用正则表达式时会发现,几乎所有的问题都有不止一种解决方案。有的比较简单,有的比较快速,有的兼容性更好,有的功能更全。这么说吧,在编写正则表达式的时候,只有对、错两种选择的情况是相当少见的——同一个问题往往会有多种解决方案。正如前面讲过的那样,正则表达式的不同实现往往会有所差异。学习正则表达式的关键是实践,实践,再实践。