特殊字符
^ 匹配输入字符串的开始位置。
$ 匹配输入字符串的结尾位置。
() 标记一个子表达式的开始和结束位置。
[ 标记一个中括号表达式的开始。
{ 标记限定符表达式的开始。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
? 匹配前面的子表达式零次或一次。
. 匹配除换行符 \n 之外的任何单字符。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
| 指明两项之间的一个选择。
限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
限定符出现在范围表达式之后。
*、+ 限定符都是贪婪的,因为它们会尽可能多的匹配文字,
只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配。
* 匹配前面的子表达式零次或多次。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。
{n,} n 是一个非负整数。至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
定位符
^ 匹配输入字符串开始的位置。
$ 匹配输入字符串结尾的位置。
\b 匹配一个单词边界,即字与空格间的位置。
\B 非单词边界匹配。
不能将限定符与定位符一起使用。
元字符
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。
. 匹配除换行符(\n、\r)之外的任何单个字符。
^ 匹配输入字符串的开始位置。
$ 匹配输入字符串的结束位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
? 匹配前面的子表达式零次或一次。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。
{n} n 是一个非负整数。匹配确定的 n 次。
{n,} n 是一个非负整数。至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
(pattern) 匹配 pattern 并获取这一匹配。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。
(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反。
(?
运算符优先级
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序)
| 替换,"或"操作
``