正则表达式简记
浏览 296 | 评论 0 | 字数 1283
lovecatc
2020年09月03日
  • 正则表达式简记

    参考文章完整版

    元字符

    \b代表单词的开头或结尾,也即分界处。事实上,它匹配了一个前后不全为w位置

    \s匹配任意空白符,即空格、Tab、换行符、全角空格等

    ^ $分别代表被查找字符串的开头和结尾。

    .匹配一个除了换行符以外的任意字符

    \d匹配一位数字

    \w匹配字母或数字或下划线或汉字。注意它不匹配-号。连字号-应直接打印并匹配。

    []可以匹配方括号内的任意字符。[aeiou]就匹配了元音字母。[ ]表示匹配空格。[0-9]\d

    ()可以用来构造子表达式。

    *指定*前的内容可以重复任意次以使表达式匹配。换言之,*描述了数量

    +*类似,但是它要求至少匹配一次

    ?则是匹配零次或一次。

    {}同样指定数量{x}放在匹配字符的元字符后代表必须匹配x次。{a,b}代表匹配a到b次。{n,}代表不少于n次。

    为了查找元字符所对应的字符,需要使用\进行转义。

    将元字符大写,就是其对应的反义字符。[^aeiou]也为反义。

    分支条件

    |利用分隔符分开多个正则表达式,满足任意一个即匹配。优先级为从左到右。

    分支条件也可以用在子表达式内。

    后向引用

    当使用小括号指定子表达式后,相应子表达式所匹配的文本可以被进一步引用。

    分组组号

    默认情况下,每个子表达式(即分组)会被自动分配组号。整个正则表达式的组号为0,然后自左至右扫描两次,第一次给未命名组分配组号,第二次给命名组分配组号。

    分组命名

    使用如下的语法

    (?<name>exp)为一个分组命名。

    (?:exp)将不会为分组分配组号。

    零宽断言

    (?=exp)这一断言用于匹配exp前面的表达式。例如,\b\w+(?=ing\b)将匹配以ing结尾单词的前半部分,如I'm sleeping,将匹配sleep

    ?<=exp用于匹配exp后面的表达式。例如,(?<=\bpre)\w+\b将匹配以pre开头的单词的后半部分

    ?!exp?<!exp则分别是对应的反义断言。

    贪婪和懒惰

    贪婪即匹配尽可能多的字符,懒惰反之。

    默认使用的是贪婪匹配,为了使用懒惰匹配,可以在表示匹配次数的元字符后加?

    *? +? ?? {a,b}?

    本文作者:lovecatc
    本文链接:https://lovecatc.com/index.php/archives/14/
    最后修改时间:2020-09-03 10:56:16
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    评论
    与本文无关评论请发留言板。请不要水评论,谢谢。
    textsms
    支持 Markdown 语法
    email
    link
    评论列表
    暂无评论