源代码:https://gitee.com/AgentXiao/RegularExpression
一、捕获组和非捕获组
捕获组的符号是小括号()
捕获组的作用
a、括号内的表达式当作整体
b、每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号。
例如:([a-z]{2})\1 ([a-z]{2}) 匹配连续的两个小写字母,\1 代表反向引用,即([a-z]{2})匹配到的内容需要重复一次才能被匹配到。
如果有多个括号或者反向引用依次类推。。。
使用捕获组是会把捕获到的内容保存到内存当中的,如果数据量较大会占用较多的资源。如果需要使用()但是不想保存,使用非捕获组(?:Expression)
二、预搜索(零宽断言)
零宽度-->对位置的匹配。判断一个位置前边应该怎么样,后面又应该怎么样,但是本身不计入匹配结果。
1、(?=exp) 后面为表达式exp
可见只要是以数字一个或多个数字结尾的都匹配到,但是不包含数字本身。