正则表达式
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_] | 非词汇字符 |