正则表达式:
从根本上看,正则表达式由两个基本部分组成:一般字符和特殊字符。
一般字符指的是任何没有特殊意义的字符。
特殊字符常被称为元字符(metacharacter),下面以meta字符表示。
传统上,POSIX定义了两种正则表达式语法,即:基本正则表达式(BRE)和扩展正则表达式(ERE)。
POSIX BRE及ERE的meta字符
字符 BRE/ERE 模式含义
\ 皆可 通常用以关闭后续字符的特殊意义
. 皆可 匹配任何单个字符,NUL除外
* 皆可 匹配在它之前的任何数目(或没有)的单个字符
^ 皆可 在行或字符串的起始处匹配紧接着的正则表达式
$ 皆可 在字符串或行尾处匹配前面的正则表达式
[...] 皆可 方括号表达式,匹配方括号内的任一字符。连字符(-)指的是连续字符的范围
^符号置于方括号里第一个字符则有相反含义:即匹配不在列表内(方括号内)的任何字符
\{n,m\} BRE 区间表达式,匹配在它前面的单个字符重现的次数区间
{n,m} ERE 区间表达式,匹配在它前面的单个字符重现的次数区间
\( \) BRE 将\(与\)间的模式作为独立的子表达式,后面可以通过转义序列来引用(例如\1)
例如: \(ab\).*\1,指的是匹配与ab组合的两次出现,中间可存在任何数目的字符
\n BRE 重复在\(与\)内的第n个子模式,n为1-9的数字,1为由左开始
+ ERE 匹配前面正则表达式的一个或多个实例
? ERE 匹配前面正则表达式的0或1个实例
| ERE 匹配|前面或后面的正则表达式
() ERE 匹配()括起来的正则表达式群
示例:
表达式 匹配
tolstoy 位于一行上任何位置的7个字母: tolstoy
^tolstoy 位于一行开头的tolstoy
tolstoy$ 位于一行结束的tolstoy
^tolstoy$ 一行恰好为tolstoy
[^aeiouy] 小写a、e、i、o、u、y之外的任何字符
BRE运算符优先级(从高到低):
[..] [==] [::] 用于字符排序的方括号符号
\metacharacter 转义的meta字符
[] 方括号表达式
\( \) \digit 子表达式或后向引用
* \{ \} 前置单个字符重现的正则表达式
无符号 连续
^ $ 锚点
ERE运算符优先级(从高到低):
[..] [==] [::] 用于字符排序的方括号符号
\metacharacter 转义的meta字符
[] 方括号表达式
() 分组
* + ? {} 重复前置的正则表达式
无符号 连续
^ $ 锚点
| 交替
从根本上看,正则表达式由两个基本部分组成:一般字符和特殊字符。
一般字符指的是任何没有特殊意义的字符。
特殊字符常被称为元字符(metacharacter),下面以meta字符表示。
传统上,POSIX定义了两种正则表达式语法,即:基本正则表达式(BRE)和扩展正则表达式(ERE)。
POSIX BRE及ERE的meta字符
字符 BRE/ERE 模式含义
\ 皆可 通常用以关闭后续字符的特殊意义
. 皆可 匹配任何单个字符,NUL除外
* 皆可 匹配在它之前的任何数目(或没有)的单个字符
^ 皆可 在行或字符串的起始处匹配紧接着的正则表达式
$ 皆可 在字符串或行尾处匹配前面的正则表达式
[...] 皆可 方括号表达式,匹配方括号内的任一字符。连字符(-)指的是连续字符的范围
^符号置于方括号里第一个字符则有相反含义:即匹配不在列表内(方括号内)的任何字符
\{n,m\} BRE 区间表达式,匹配在它前面的单个字符重现的次数区间
{n,m} ERE 区间表达式,匹配在它前面的单个字符重现的次数区间
\( \) BRE 将\(与\)间的模式作为独立的子表达式,后面可以通过转义序列来引用(例如\1)
例如: \(ab\).*\1,指的是匹配与ab组合的两次出现,中间可存在任何数目的字符
\n BRE 重复在\(与\)内的第n个子模式,n为1-9的数字,1为由左开始
+ ERE 匹配前面正则表达式的一个或多个实例
? ERE 匹配前面正则表达式的0或1个实例
| ERE 匹配|前面或后面的正则表达式
() ERE 匹配()括起来的正则表达式群
示例:
表达式 匹配
tolstoy 位于一行上任何位置的7个字母: tolstoy
^tolstoy 位于一行开头的tolstoy
tolstoy$ 位于一行结束的tolstoy
^tolstoy$ 一行恰好为tolstoy
[^aeiouy] 小写a、e、i、o、u、y之外的任何字符
BRE运算符优先级(从高到低):
[..] [==] [::] 用于字符排序的方括号符号
\metacharacter 转义的meta字符
[] 方括号表达式
\( \) \digit 子表达式或后向引用
* \{ \} 前置单个字符重现的正则表达式
无符号 连续
^ $ 锚点
ERE运算符优先级(从高到低):
[..] [==] [::] 用于字符排序的方括号符号
\metacharacter 转义的meta字符
[] 方括号表达式
() 分组
* + ? {} 重复前置的正则表达式
无符号 连续
^ $ 锚点
| 交替