正则表达式是基于样式匹配的文本处理技术的关键所在。想要在编写文本处理工具方面驾轻就熟,你就必须对正则表达式有一个基本的理解。正则表达式是一种用于文本匹配的形式小巧、具有高哦啊嘟针对性的编程语言。只依靠通配符技术,能够匹配的文本范围相当有限。本文将对基础的正则表达式进行详解。

正则表达式描述实例
^行起始标记^tux匹配以tux起始的行
$行尾标记tux$匹配以tux结尾的行


.


匹配任意一个字符

Hack.匹配Hackl和Hacki,但是不能匹配Hackl2和Hackil,它只能匹配单个字符
[]匹配包含在[字符]之中的任意一个字符coo[kl]匹配cook或cool
[^]
匹配除[^字符]之外的任意一个字符9[^01]匹配92、93,但是不匹配91或90
[-]匹配[]中指定范围内的任意一个字符[1-5]匹配从1~5的任意一个数字

匹配之前的项1次或0次colou?r匹配color或colour,但是不能匹配colouur
+
匹配之前的项1次或多次Rollno-9+匹配Rollno-99,Rollno-9,但是不能匹配Rollno-
*
匹配之前的项n次co*l匹配cl、col、coool等
()创建一个用于匹配的子串ma(tri)?匹配max或maxtrix
{n}
匹配之前的项n次[0-9]{3}匹配任意一个三位数,[0-9]{3}可以扩展为[0-9][0-9][0-9]
{n,}
之前的项至少需要匹配n次[0-9]{2,}匹配任意一个两位或更多位的数字
{n,m}指定之前的项所必需匹配的最小次数和最大次数[0-9]{2,5}匹配从两位数到五位数之间的任意一个数字
|
交换--匹配|两边的任意一项Oct (1st|2nd)匹配Oct 1st或Oct 2nd
\
转义符可以将上面介绍的特殊字符进行转义。a\.b匹配a.b,但不能匹配ajb。通过在.之间加上前缀\,从而忽略了.的特殊意义





POSIX字符类

正则表达式描述示例
[:alnum:]字母与数字字符[[:alnum:]]+
[:alpha:]字母字符(包括大写字母与小写字母)[[:alpha:]]{4}
[:blank:]空格与制表符[[:blank:]]*
[:digital:]数字字符[[:digital:]]?
[:lower:]
小写字母[[:lower:]]{5,}
[:upper:]
大写字母([[:upper:]]+)?
[:punct:]
标点符号[[:punct:]]
[:space:]包括换行符、回车等在内的所有空白字符[[:space:]]+