美文网首页
正则表达式学习笔记

正则表达式学习笔记

作者: wishWinds | 来源:发表于2017-11-30 10:55 被阅读0次

    [TOC]

    正则表达式学习笔记

    1. cheatsheet

    Regex cheatsheet.png

    2. 介绍

    2.1 character

    有时我们希望meta character来代表字符

    \d 单个数字

    \w 单个字母或数字

    \W 单个非字母或数字

    \s 单个空格或TAB

    \S 单个非空格或TAB

    . 单个任意字符

    2.2 quantifier

    有时我们希望加上量词加以修饰

    ? 有或者没有(0或1)

    * 0个或者以上

    + 1个或者以上

    {n} n个

    {min, max} min和max之间包含min和max

    2.3 position

    有时我们希望指定搜索的位置

    ^ 代表行首占位符

    $ 代表行末占位符

    \b 代表文字边界 (word boundary)占位符

    2.4 char class/alternation

    扩展搜索的or 和 not 功能

    [] 可选框, 框内所有字符都是or关系,代表可以是某个字符或者是另一个字符

    框内中使用. 代表字面量,不是meta character

    -

    ​ 出现在第一个,代表字面量

    ​ 出现在非第一个,代表从某字符到某字符,例如[a-z]代表从a到z

    ^

    ​ 出现在第一个,代表取反

    ​ 出现在非第一个,代表字面量

    ()将alternation包裹其中,并用|分隔,切记,此时分隔匹配的是整个可选单词,而不像[]里是单个字符

    2.5 capturing group

    正则内部会有一个capturing group的概念。每次匹配中,匹配的字符串为group0, 用()指定的group按顺序为group1, group2...

    () 代表我们要捕获的group

    2.6 reference

    我们通过设置capturing group后,会在某个地方引用它, 通过$符号就可以引用, $0代表整个字符串, $1代表设置的第一个capturing group

    有时我们希望有一种变量能够标记某个匹配,使得我们可以重复使用它来代表重复出现。这种思想很像编程中的范型:虽然我们不知道他们具体是什么,但是我想约束他们在表达式中的关系。这时\出现了。 \1代表第一个capturing group

    综上:

    ​ $一般用在替换中。 在替换中引用表达式中的某个capturing group;

    ​ \一般用在表达式中。自己引用自己的某个captruing group以增加约束关系

    3. 总结

    我们发现小小的正则表达式,其实体现了编程里面的一些基本思想。

    正则的本质是字符串搜索。通过搜索,我们又延伸了搜索中的or not概念来增强表达式的能力。后面我们又加入了变量的功能来得以复用。加入范型的概念以使用更高阶的表达式来约束搜索。

    4. js举例

    js中使用g代表全局,使用i代表忽略大小写

    4.1 match/test/exec

    match作用在字符串上,test/exec作用在regex上

    match不会返回capturing group

    exec每次执行会返回group0, group1…数组。加上g参数后, 需要自己迭代执行, 以获取每次查找的所有group

    "My name is John".match(/\b\w\b/g) 匹配所有单词

    "abc@abc.com abc.d.e@123.edu abc@abc.net".match(/[.\w]+@\w\.(com|net|edu)/g)匹配邮箱

    4.2 split

    我们可以用split来指定哪些是分隔符,通常用\W来表示, split后的数组不包含分隔符,如果我们希望保留分隔符,可以用一个tricky方法。使用(\W), 添加一个group

    4.3 replace

    replace后面可以跟2个参数, 一个是正则表达式,一个是字符串或者函数。

    相关文章

      网友评论

          本文标题:正则表达式学习笔记

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