正则表达式总结

正则表达式

//元字符
.     换行符以外任意字符
\w    字母/数字/下划线/汉字
\s    任意空白符
\d    数字
\b    单词开始和结尾
^     字符串开始
$     字符串结束

//字符转义
使用\来取消字符的特殊意义

//重复
*     重复任意次
+     重复一次或多次
?    重复零次或一次
{n}   重复n次
{n,}  重复n次以上
{n,m} 重复n到m次

//字符类
[aeiou]    匹配aeiou任何一个英文字母
[0-9]      匹配0到9任何一个数字

//分支条件
|    匹配成功,就不再继续匹配。\d{4}|\d{5}

//分组
(01\d){5}    分组内容重复5次

//反义
\D          大写后匹配非数字
[^aeiou]    匹配除aeiou以外任意字符

//后向引用
\1           分组1匹配的文本,\b(\w+)\b\s+\1\b匹配像go go重复单词
(exp)        匹配exp并捕获文本到命名组里
(?<name>exp) 匹配exp并捕获文本到名称为name的组里
(?:exp)      匹配exp,不捕获文本,也不分配组号
(?=exp)      匹配exp前面的位置
(?<=exp)     匹配exp后面的位置
(?!exp)      匹配后面不是exp的位置
(?<!exp)     匹配前面不是exp的位置
(?#comment)  注释

//贪婪与懒惰
a.*?b    匹配最短的,以a开始,以b结束的字符串。
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符,这被称为贪婪匹配。懒惰匹配,也就是匹配尽可能少的字符,化为懒惰匹配模式,只要在它后面加上一个问号?//处理选项
IgnoreCase   忽略大小写
Multiline    多行模式
Singleline   单行模式,更改.的含义,使它与每一个字符匹配(包括换行符\n)。
IgnorePatternWhitespace    忽略空白
ExplicitCapture            显式捕获

//平衡组/递归匹配
平衡组的一个最常见的应用就是匹配HTML。
<                         #最外层的左括号
    [^<>]*                #最外层的左括号后面的不是括号的内容
    (
        (
            (?'Open'<)    #碰到了左括号,在黑板上写一个"Open"
            [^<>]*        #匹配左括号后面的不是括号的内容
        )+
        (
            (?'-Open'>)   #碰到了右括号,擦掉一个"Open"
            [^<>]*        #匹配右括号后面不是括号的内容
        )+
    )*
    (?(Open)(?!))         #在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果还有,则匹配失败

>                         #最外层的右括号

//其他
\n    换行符
\t    制表符
\r    回车
   

 

posted @ 2018-07-11 16:12  kerwin cui  阅读(160)  评论(0编辑  收藏  举报