正则表达式可以说是一个开发者利器,但里面的各种符号又看似没有规律可循,完全摸不着头脑,今天老王就带你找找规律。
其实当你真正了解下来之后,无外乎就那么几个相关字符,不难记也不难懂。要说难就难在组合一起起来之后,乍一看一脸懵逼,这写的什么玩意儿!仔细看下来,拆开看,你就能发现其中的规律及奥妙了。
正则元字符
元字符是表示其在正则表达式上下文中的行为,下面介绍常用的元字符以及作用
"^":匹配输入字符串的开始位置"$":匹配输入字符串的结束位置"*":匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 "+":匹配前面的子表达式一次或多次。例如,zo+ 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 "?":匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}。"\":将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符"\b" :匹配一个单词边界,也就是指单词和空格间的位置"\d": 匹配一个数字字符。等价于 [0-9]"\D":匹配一个非数字字符。等价于 [^0-9]"\f": 匹配一个换页符。等价于 \x0c 和 \cL"\n": 匹配一个换行符。等价于 \x0a 和 \cJ "\r ":匹配一个回车符。等价于 \x0d 和 \cM"\w":匹配字母,数字,下划线
正则反义
反义的写法最简单,把字母改成大写就可以了,意思与原来的相反,比如
"\B":匹配不是单词开头或结束的位置"\S":匹配任意不是空白符的字符"\W" :匹配任意不是字母,数字,下划线 的字符"\D":匹配任意非数字的字符"[^abc]" :匹配除了abc以外的任意字符
正则量词
量词记住三个就行了:贪婪(*)、懒惰/勉强(?)、占有(+)
“*”,重复零次或更多,字符会首先会尽可能多的匹配整个字符串,如果失败,则回退一个字符,例如“a*”会匹配a后面的所有的a "?" ,重复零次或一次, 是从目标的起始位置开始尝试匹配,每次检查一个字符并且判断是否是要找的字符,直到字符串结尾处,例如:"bbbbbb" 匹配字符串中的b 正则 : "b?" 只会匹配一次,也就是结果只是单个字符b"+" ,重复一次或更多次,它会覆盖整个目标字符串,然后尝试寻找匹配内容 ,但它只尝试一次,例如:"cccccc" 匹配字符串中所有的c 正则: "c+" 会取到字符中所有的c字符
正所谓擒贼先擒王,授人以鱼不如授人以渔,看完以上关于正则表达式的规则,你有没有一种似曾相识,豁然开朗的感觉呢?欢迎留言评论探讨更多关于正则表达式的问题。
我是隔壁老王,爱编程爱学习,喜欢我的文章请关注分享,满满干货!