美文网首页
正则表达式要点整理

正则表达式要点整理

作者: VitaminChen | 来源:发表于2017-05-19 11:53 被阅读31次
    字符 含义
    \n 换行符
    \r 回车
    \s 匹配任何空白字符,包括空格、制表符、换页符等等
    \S 匹配任何非空白字符
    $ 匹配输入字符串的结尾位置,比如 abc$ 可以匹配到 123abc
    ^ 匹配输入字符串的开始位置,但在方括号中使用,表示除去表达式中的字符。例 ^abc 可以匹配 abc123,[^abc] 可以匹配 bcdef
    . 匹配任何 单个字符 (除新行符 (\r\n) 外)
    * 匹配 零个或多个 前面的字符。.* 是匹配范围最广的模式之一, 因为它可以匹配零个或多个任意字符
    + 匹配 一个或多个 前面的字符
    匹配 零个或一个 前面的字符,可以理解为前面的字符是可选的。例 a(bc)? 可以匹配 axxxx 或者 abcxxxxx
    {n} 精确匹配n次
    {n,} 匹配最少n次
    {n,m} 匹配n到m次
    [...] [abc] 表示 "a, b, c 的中任何一个字符"。使用破折号来创建范围,例如[a-z] 表示 "在小写字母 a 和 z (包含的) 之间的任何一个字符"。 列表和范围可以组合在一起,例如 [a-zA-Z0-9_] 表示 "字母, 数字或下划线中的任何一个字符"。^用在方括号里表示排除
    \d 匹配任意一个数字 (相当于类 [0-9])
    \w 匹配任意一个字母数字下划线,等同于 [a-zA-Z0-9_]
    \b 代表着单词的开头或结尾,也就是单词的分界处,通常用来避免意外地匹配到在其他单词内的某个单词,例 \bcat\b 对于 123catabc,123_cat_abc都无法匹配,对于 123 cat abc,123-cat-abc 则可以匹配。即cat前后要用除了[a-zA-Z0-9_]以外的字符分隔开才能匹配
    I 将两个或多个可选项目分隔开来. 如果可选项目中 任何一个 满足条件, 则会形成匹配
    • 贪婪:默认情况下 *、?、+ 和 {n,m} 是贪婪的,因为它们消耗到最后一个能满足整个模式的所有字符。要让它们停在 首个 可能的字符, 要在它们后面加上问号。 例如模式 <.+> 表示 "搜索一个 <, 接着一个或多个任意字符, 然后是一个 >",这会匹配整个字符串 "<tag>text</tag>"。在加号后加上问号: <.+?>. 这样会让匹配在第一个 '>' 处停止, 然后再从 '<' 开始匹配,因此只匹配<tag> 和 </tag>

    • 预测和回顾断言: (?=...)、(?!...)、(?<=...) 和 (?<!...) 被称为断言,因为它们要求符合某个条件但不消耗任何字符。例如 abc(?=.\*xyz) 中含有预测断言, 它要求在字符串 abc 右边的某个位置存在字符串 xyz (如果不存在, 则匹配失败)。(?=...) 被称为 正预测断言, 因为它要求指定的模式存在. 相反地,(?!...) 是 负预测断言, 因为它要求指定的模式不存在。同样地, (?<=...) 和 (?<!...) 分别是正的和负的 回顾断言, 因为它们检查当前位置的 左边而不是右边。回顾比预测受到更多的限制,因为它们不支持可变大小的限定符, 例如*, ? 和 +。

    相关文章

      网友评论

          本文标题:正则表达式要点整理

          本文链接:https://www.haomeiwen.com/subject/fgfrxxtx.html