曾在某课网看过些视频,然后聊起正则就想到鬼斧神工这几个字。。视频里还说正则是计算机科学界的一朵奇葩。。好久没用了,于是做个写个总结来记录下,当然也查阅了一些文档和请教了些大神。
基本的原子
- \w 代表一个0-9,a-z,A-Z,_的任意一个字符
- \s 代表一个看不见的原子,空格、换行、tab
- \n 代表换行符
- \b 代表一个单词边界(字母和空格之间的边界,不是空格)
- \d 代表一个数字
- . 代表除换行符以外(\n)的任意字符
自定义匹配任意一个的方法
- [abc] 可以匹配abc中任意一个字符
- [^abc] 可以匹配除abc以外的任意一个字符(包括\s能匹配的字符)
- [a-f0-9] 可以匹配a-f和0-9中任意一个字符
设置匹配次数
- {2} 设置匹配次数为2
- {2,5} 设置匹配次数为2到5
- {1,} 设置匹配次数为1次或多次
- ? 设置匹配次数为0-1次,相当于{0,1}
- + 设置匹配次数为1次或以上,相当于{1,}
- * 设置酦醅次数为0次以上,相当于{0,}
贪婪匹配
贪婪匹配:\w+ 会匹配后面所以符合要求的字符
非贪婪匹配:\w+? 会匹配后面尽可能少的字符
下面都用这个字符串来做例子 abbcbcbb
然后来看看本质是怎么匹配的
贪婪匹配是匹配了所有合适字符再回头匹配,同样上面例子
非贪婪匹配是匹配了最少的字符在向下匹配,同样上面例子
分组
分组应该是正则最有意思的东西了。
分组用()来作为一组的单位,我们也可以叫它为一个子串
这一条正则语句有三个子串,然后假如我们想把匹配到的内容的第二个子串改成“我自己的内容”,我们可以这么做
是的,replace函数允许我们对分组进行引用,引用形式就是$index,index为第几个分组
分组不仅允许我们在匹配完成后引用,也可以在匹配时引用
可以匹配”‘hello’”,通过+index来表示引用的分组,index为第几个分组
一些常用的规则
- ^ 匹配输入字符串的开始位置
- $ 匹配输入字符串末尾位置
- | 表示或关系
如果遇到一些关键字的话,我们需要用\来转义
以上是对正则的一些小总结