正则表达式详解

图片1.png

注意: ^ 在 [ ] 中是取反的意思,在外面是匹配字符串的开始的意思

^.{2}$ 表示匹配两个除了\以外字符组成的字符串

[^aeiou] 表示除了aeiou以外的字符

  1. 反义(将小写变成大写即可)

图片2.png

[ aeiou] ID 表示 可以是[ ]中的任意一个再加上 ID 组成的字符

3.转义

题: 如何匹配特殊字符呢 ? 如 ‘ . ’ ,’ ? ‘等

答:使用转义符 【 \ 】,如 \ . , \ ?

  1. 正则表达式的注释

图片3.png

5.正则表达式的重复

图片4.png

例如:

?表示 有没有,+ 表示要不要在加几个 ,* 表示任意个,没有限制

zo* 表示可以匹配 z 或者 zoo

\ d{8} 表示 匹配 8位的数字

6.分支条件

图片5.png

例子

如 ^ 0\d{2,3}-\d{8} | 0\d{3}-d{7} $

021-1234567 true

023-12345678 true

023-123456789 false,后半段数字的长度只能是7或者8位,其中 …^ 表示开始, $表示结尾

\d{2,6} 表示2到6位数字

7.分组:()

作用:将子表达式做成子集,方便对匹配的字符进行划分

符号 :()

例子:

(\d{1,3} \ .){3}\d{1,3} 匹配IP地址

其中 \d {1,3} 表示 可以是 1-3个数字

图片6.png

8.贪婪和懒惰

  • 贪婪 : .*

    作用: 比如 <a.*> ,如果一个页面中有多个< a>标签,则会将第一个< a > 一直到最后一个< a> 看成是一个结果找出

    理解:

    ‘ . ‘ 代表 匹配除了 换行符 以外的所有字符

    ‘ * ’ 代表 出现次数为 零次到无限次

    ‘ .* ‘ 表示 除了换行符的字符 出现零次到无限次

  • 懒惰 :.*?

    作用:比如 < a .*>,如果一个页面中有多个 < a > 标签,则会将每一个 < a>标签看成一个结果,如果有n个 ,则会有n个结果

    理解:

    ’ ?’ 代表 出现零次或者一次(尽量匹配少的内容,最简短的那个)


    例子:

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

    有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

    a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)

图片7.png

图片8.png

原创文章,作者:天马行空_eaa7,如若转载,请注明出处:https://www.miaoshou.cc/181299.html

(0)
上一篇 2021年8月28日 11:10
下一篇 2021年8月28日 11:10

相关推荐