正则表达式
2018 algorithm正则表达式(Regular Expression),是一个定义搜索模式(pattern)的序列字符串。该模式经常用作搜索,替代字符串以及验证输入的正确性。
基础概念
-
选择(or)
垂直分割线|
代表选择。a|b
能够匹配’a’和’b’。 -
分组(Grouping)
括号()
经常用于定义运算符的范围和优先级(以及其他的用途)。gray|grey
和gr(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_] | 非词汇字符 |