首页 > 代码库 > 正则表达式
正则表达式
正则表达式是人们为了高效快捷地搜索、替换特定信息而发明的一种工具,它由一些用来匹配和处理文本的字符串所构成。简单地说,正则表达式是用正则表达式创建的,其目的是解决需要用到搜索、替换的复杂问题,而这些问题用其他方式并不容易实现。正则表达式虽然算不上一种完备的程序设计语言,但是其也有需要去掌握的特殊语法和指令,能够掌握正则表达式,无疑会使我们在处理诸如文本编辑、信息提取等问题上真正做到游刃有余。确实,语法并不是正则表达式最难的地方,真正困难的是如何将实际问题具体到各种可能出现的细节,从而让正则表达式匹配精度尽可能地高。
虽然不同的语言或程序正则表达式的用法可能会有所差异,但原理应当是一致的。(注:接下来的实例中,被匹配的内容将用红色标出)
1、匹配单个字符
1.1 匹配纯文本
正则表达式包括纯文本,也可以只包含纯文本,只不过只是纯文本的话,就显得有点浪费了。
E.g.
文本:Here is bokeyuan.I am here.
正则表达式:here
结果 : Here is bokeyuan.I am here.
可以看到,这里正则表达式here匹配到了here(红色的),也可以看到正则表达式是区分大小写的(不同语言或工具对于不区分字母大小写的匹配操作可能有不同的规则,需要自己查询)。简单说一下,匹配到了能干什么呢?因为正则表达式本身不是完备的语言,它需要配合其他语言或程序使用,于是你就可以在你使用的语言或程序的支持下进行你想要的操作了,如一个文件夹中某些文件名的查询、HTML中对网页布局的查询和修改等,可以做的事是非常多的。
总结:正则表达式由正则表达式语言所构造,它一般被用来完成复杂的搜索和替换操作,当然替换操作执行之前首先要进行搜索。
1.2 匹配任意字符
E.g.
文本:Here is bokeyuan.I am here.
正则表达式:.ere
结果 : Here is bokeyuan.I am here.
可以看到,.here匹配到了Here和here,说明.字符既匹配到了H,有匹配到了h;因为.字符可以匹配任何除了换行符以外的任意单个字符、字母、数字以及.本身(在绝大多数正则表达式里)。
1.3 匹配特殊字符
正则表达式里有很多特殊含义的字符(即这些字符在正则表达式里不具有本来的含义,而是正则表达式所规定的含义),如.字符本身含义就是一个.,但是在正则表达式里代表除了换行符以外的任意单个字符、字母、数字以及.本身的含义。但是你想要在正则表达式里使用这些特殊字符的本来含义应该怎么办呢?只需要在.前面加上一个反斜杠字符\进行转移即可;对,这里\字符便是转义字符,\.在正则表达式里代表.的意思。既然\在正则表达式代表转义的含义,那么\字符也是特殊字符了,这些特殊字符还有一个名字叫元字符(在正则表达式中,这个字符有特殊含义,而不是其本身含义)。
E.g.
文本:This is bokeyuan. The URL is www.boke.com.
正则表达式:boke\.
结果:This is bokeyuan. The URL is www.boke.com.
可以看到,这里匹配到了boke.而没有匹配到bokey,因为\.在正则表达式就是代表.的意思。
总结:正则表达式是由一些字符构成的字符串,这些字符可以是普通字符或元字符(在正则表达式里有特殊含义的字符)。可以看到,在正则表达式里,有一些特殊字符在加了\之后才代表自身含义,但是含有更多的字符是加了\之后才有了特殊含义。
注:正则表达式中,.具有特殊含义,加\之后的\.仅代表字符.;n仅代表字符n,加\之后的\n具有了特殊含义,就是换行。所以,有些字符转义之前是元字符,有些字符转义之后是元字符,之后我们将看到更多的这种元字符(正则表达式中的特殊字符)。
正则表达式