正则表达式规则
1、非打印字符
非打印字符也可以是正则表达式的组成部分,下面列出了表示非打印字符的转义字列
\cx:匹配有x知名的控制字符。例如:\cM匹配一个control-M或回车符。x的值必须为A-Z或a-z之一。
\f:匹配一个换页符。等价于\x0c和\cL
\n:换行符
\r:回车符
\s:匹配任何空白字符
\S:匹配任意一个非空白字符
\t:匹配一个制表符
\v:匹配一个垂直制表符
2、特俗字符
^:匹配输入字符的开始位置,除非再方括号表达式中使用,此时它表示不接受该字符集合(非)
$:匹配输入字符的结尾位置
():标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用
*:0-无限
+:1-无限
?:0-1
[]:标记一个中括号表达式的开始和结尾
|:指明两项之间的一个选择
3、限定符
*:0-无限
+:1-无限
?:0-1
{n}:匹配n次
{n,}:匹配至少n次
{n,m}:最少匹配n次,最多匹配m次
*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。
4、定位符
定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。
^和$分别指字符串的开始和结尾,
\b描述单词的前或后边界,即字与空格键的位置/\bCha/ /ter\b/
\B表示的非单词边界 /\Bapt/
5、选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。