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

正则表达式笔记

作者: 榷奕 | 来源:发表于2020-02-20 20:45 被阅读0次

    正则表达式

    正则的用处:python的网页爬虫中用的相当多

    写正则表达式的整体思路:

    首先把你要匹配的字符串粘过来,然后把里面共性的东西留着,空格换成\s,其他的可变字符串替换成各种匹配,然后那些不变的部分留着就行了。

    pattern

    元字符 说明
    . 所有
    \b begin,匹配单词开始
    ^ 匹配一行的开始
    $ 匹配一行的结束
    \d digital,数字
    \w word,匹配数字字母下划线汉字,什么都能匹配
    \s 匹配空格
    \ 转义符 .*\ 这些用

    .匹配任意

    字符集:[12] 中括号是字符集,匹配中括号中任意字符中的一个,这个表达式匹配1或者2,只匹配一个

    [0-9]就相当于\d

    这个[]这里还要多写一点,因为[]里面无限装东西,而含义就是这个字符集相当于里面装的所有东西的其中一种,就有一个或的意思在里面。如果是两个表达式来取或的话,就用|

    次数:

    *0或多个

    +至少一个

    数量词[0-9]{4},匹配四位数,大括号套起来就是次数

    [0-9]{4,6}这个是贪婪匹配,比如要被匹配的字符串一共就六个数字,那这肯定就都匹配了,先从上限开始找

    [0-9]{4,6}?这个等同于[0-9]{4},后面带了一个问号之后,就不敢多要了,大括号成了废话。

    分组()

    分组是括号,只要看见括号,而且这个括号前面还没有转义符的话,且括号后面跟的是大括号,比如

    ([1-9].){3}

    这种小括号大括号连着用的结构,相当方便断句啊!

    分组的别名

    如果分组太多,不命名不好调用。问号尖括号连用,外面用小括号包着,只要看见这个小括号跑不了就是分组,例如:

    (?<name1>([1-9].){3})

    (?<name1> exp )

    如果尖括号前面不带问号的话,这个<>本身就不构成语法。

    分组这个东西,有了括号之后,就方便把这个组的取值拉出来,(?<> xxxx)这种表达式,把问号尖括号去掉之后,其他的仍然是一个正常的正则分组。

    分组表达式取反
    分组取反

    问号冒号连用

    (?: exp),(?:([1-9].){3})

    这个取到的是上面这个表达式没匹配到的部分,问号冒号连用没法命名

    贪婪匹配与懒惰匹配

    贪婪比如 .*1,*就是贪婪,流星碎片,尽可能多的去匹配

    懒惰 .*?1,?就是懒惰,尽可能少的去匹配

    这两个中,都是匹配xxxxx1,不过第一个要匹配到最后一个1,第二个到第一个1就停了。

    (问号, 表示一点贪婪之后???)

    相关文章

      网友评论

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

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