正则表达式(Regular Expression),是一个定义搜索模式(pattern)的序列字符串。该模式经常用作搜索,替代字符串以及验证输入的正确性。

基础概念

  • 选择(or)
    垂直分割线|代表选择。a|b能够匹配’a’和’b’。

  • 分组(Grouping)
    括号()经常用于定义运算符的范围和优先级(以及其他的用途)。gray|greygr(a|e)y都是同等模式串可以匹配’gray’和’grey’。

  • 定量(Quantification)
    某个字符后的数量限定符用来限定前面这个字符允许出现的个数。最常见的限定符有问号?,星号*,加号+{m}{m,}{m,n}

  • 通配符(Wildcard)
    通配符.用来匹配任意单个字节。

语法

POSIX basic and extended

IEEE POSIX现在有两个标准集合:BRE(Basic Regular Expression)和ERE(Extended Regular Expression)。ERE新增了?, +|,同是移除( ){ }需要转义字符\的特征。

元字符  
^ 匹配字符串中的起始位置
. 匹配任意单个字符
[ ] 匹配括号内包含的单个字符,括号表达式
[^ ] 匹配未包含括号内字符的单个字符
$ 匹配字符串的结束位置或字符串结尾换行符之前的位置
( ) 定义一个标记的子表达式,它将会被视为单个元素,标记的子表达式也称为块或者捕获组
\n 匹配第n个标记的子表达式匹配的内容,n是1到9的数字
* 匹配前一项零次或者多次
{m} 匹配前一项m次
{m,} 匹配前一项至少m次
{m,n} 匹配前一项至少m次,至多n次
? 匹配前一项0次或者1次
+ 匹配前一项1次或者更多次
| 匹配运算符|之前或者之后的表达式

字符类

字符类匹配继文字匹配之后最基础正则表达式。

POSIX Non-standard Prel ASCII  
[:digit:]   \d [0-9] 数字
    \D [^0-9] 无数字
[:space:]   \s [ \t\r\n\v\f] 空白字符
    \S [^ \t\r\n\v\f] 非空白字符
  [:word:] \w [A-Za-z0-9_] 字母数字加_
    \W [^A-Za-z0-9_] 非词汇字符

参考链接