zoukankan      html  css  js  c++  java
  • 正则表达式

    最近学了下正则表达式,感觉有必要做下记录,方便在以后使用的时候查阅,特别说明:本文的内容均来自www.runoob.com,测试使用了http://tool.oschina.net/regex/

    个人看来,正则表达式的学习主要是掌握一些规则,因此将主要的正则规则总结如下:

    特殊字符

    也可称做元字符,在正则表达式中有特殊的含义,如果要匹配它们本身,需要在前面加上转义字符

    .

    匹配除换行符 之外的任何单字符。若匹配任意字符可用[. ]

    *

    匹配前面的子表达式零次或多次

    +

    匹配前面的子表达式一次或多次

    ?

    匹配前面的子表达式零次或一次,或指明一个非贪婪限定符(放在*、+等的后面)。

    ^

    匹配输入字符串的开始位置,在[]中使用时表示不接受该字符集合

    $

    匹配输入字符串的结尾位置

    ()

    标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。

    [

    标记一个中括号表达式的开始

    {

    标记限定符表达式的开始

    |

    指明两项之间的一个选择,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

    将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符

    其他

    此部分有的是元字符的应用,有的是一些特殊用法

    {n,m}

    次数限定,n和m均为非负整数, {1}只满足一次,{1,}满足一次以上,{1,5}满足一至五次

    (?:pattern)

    匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

    (?=pattern)

    正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。只能放在后面的位置

    (?!pattern)

    负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。只能放在后面的位置

    [abc]

    匹配包含的任意一个字符,[^abc]匹配任意不包含abc的一个字符,[a-z]表示字符集abc…xyz

    

    匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

    B

    匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

    cx

    匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。

    d

    匹配一个数字字符。等价于 [0-9]。

    D

    匹配一个非数字字符。等价于 [^0-9]。

    f

    匹配一个换页符。等价于 x0c 和 cL。

    匹配一个换行符。等价于 x0a 和 cJ。

    匹配一个回车符。等价于 x0d 和 cM。

    s

    匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。

    S

    匹配任何非空白字符。等价于 [^ f v]。

    匹配一个制表符。等价于 x09 和 cI。

    v

    匹配一个垂直制表符。等价于 x0b 和 cK。

    w

    匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。

    W

    匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。

    xn

    匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'x41' 匹配 "A"。'x041' 则等价于 'x04' & "1"。正则表达式中可以使用 ASCII 编码。

    un

    匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (?)。

      

    转义符

    (), (?:), (?=), []

    圆括号和方括号

    *, +, ?, {n}, {n,}, {n,m}

    限定符

    ^, $, 任何元字符、任何字符

    定位点和序列(即:位置和顺序)

    |

    替换,"或"操作,字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/yinghao-liu/p/5858300.html
Copyright © 2011-2022 走看看