美文网首页
正则表达式

正则表达式

作者: 梦想成真213 | 来源:发表于2019-03-19 15:52 被阅读0次
    匹配位置:

    \b:单词的开头或者结束,单词的分界处
    ^:匹配字符串的开始
    $:匹配字符串的结束

    匹配字符

    .:匹配除换行符以外的任意字符
    \d:匹配一位数字
    \s:匹配任意空白符,包括空格,tab制表符,换行符,中文全角空格
    \w:匹配字母或数字或下划线或汉字等

    字符转义

    \:用来转义特定字符,例如\\,\/,\{,\},\(,\),\.,\*

    重复

    *:数量,匹配*前面的内容连续使用任意次(可以是0次)
    +:匹配+前面的内容1次或者多次(必须有1次)
    ?:重复0次或1次
    {n}:重复n次
    {n,}:重复n次或者更多次
    {n,m}:重复n到m次(不能少于n次,不能多于m次)

    匹配字符范围

    [0-9]:类似\d,匹配0-9中的任意一位数字
    [a-zA-Z]:类似\w(只有英文的话),匹配a-z,A-Z之间的任意一个字符
    [aeiou]:匹配任意一个英文元音字母
    [.?,!]:匹配标点符号(.或?或,或!

    分支条件

    |:不同规则用|隔开,例如:0\d{2}|\d{3}[- ]?\d{8}

    分组

    ():分组用来重复多个字符的匹配次数,例如:(\d{1,3}\.){3}\d{1,3}(\d{1,3}\.)整个分组重复3次

    反义

    \W:匹配任意不是字母、数字、下划线、汉字的字符
    \S:匹配任意不是空白符的字符
    \D:匹配任意非数字的字符
    \B:匹配任意不是单词开始或结束的位置
    [^x]:匹配除了x以外的任意字符
    [^aeiou]:匹配除了aeiou这几个字符以外的任意字符

    后向引用

    后向引用:用于重复搜索前面某个分组匹配的文本。
    常用分组语法:

    捕获:

    (exp):匹配exp,并捕获文本到自动命名的组里
    (?<name>exp):匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
    (?:exp):匹配exp,不捕获匹配的文本,也不给此分组分配组号

    零宽断言

    (?=exp):匹配exp前面的位置
    (?<=exp):匹配exp后面的位置
    (?!exp):匹配后面跟的不是exp的位置
    (?<!exp):匹配前面不是exp的位置

    注释

    (?#comment):这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    贪婪与懒惰

    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配

    懒惰(非贪婪)限定符
    *?:重复任意次,但尽可能少重复
    +?:重复一次或更多次,但尽可能少重复
    ??:重复0次或1次,但尽可能少重复
    {n,m}?:重复n到m次,但尽可能少重复
    {n,}?:重复n次以上,但尽可能少重复

    参考:https://deerchao.net/tutorials/regex/regex.htm

    相关文章

      网友评论

          本文标题:正则表达式

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