只需要使用几种记号(token),你就可以描述出复杂的模式,而且你还可以对这些模式作些很酷的事,如算术运算(也就是说,计算该模式出现的次数)。
用到正则表达式的应用程序太多了,以至于不能在本文全部列出,但我们还是列出了一部分让你大概看看正则表达式有些什么作用:
模式是一个字符序列的代数表达式,它满足递加性(也就是说模式可以包含一系列其它模式)和递归性(也就是说模式可以包含子模式)。表A列出了正则表达式中常见的标记。
表A
标记 |
含义 |
. |
匹配任何单个字符(也就是说,“w.e”匹配“Brawley”,这里“.”匹配单字符“l”)。 |
|
用来指明不用考虑前后字符的单词(也就是说,定界符是空格、制表符或者逗号都不要紧)。 |
w |
匹配任何单词字符(即A~Z、a~z,以及0~9)。 |
W |
匹配任何非单词字符(即除A~Z、a~z,以及0~9之外的字符。 |
d |
匹配任何数字。 |
D |
匹配任何非数字。 |
. |
表示你实际上搜索点号的换码序列(因为点号有其它意义,所以需要用换码的方式表示它)。 |
s |
表示任何白空格(可以是制表符也可以是空格,我们并不关心它具体是什么)。 |
S |
表示任何非白空格。 |
^ |
字符串或者行的起始标记。 |
$ |
字符串或者行的结束标记。 |
* |
用于指示零或者大于零发生了。 |
? |
指示任意字符(也就是说,零或者一发生了。 |
+ |
前一标记出现一次或者多次(也就是说“w+”表示匹配任何字)。 |
[] |
表示一个范围,如[A-Z]表明匹配任何大写字母。 |
| |
OR(或)运算符,用来指示感兴趣的匹配的集合 |
() |
与“|”相同。 |
例如,模式“M[aeiouy]”表示以字符“M”开头,后面跟着任何元音字母(a、e、i、o、u或者y)的字符组合,而模式“M[^aeiouy]”表示字符“M”后没有跟着元音字母的字符组合。