正则表达式--括号
前言
在初识和位置两节中,已经不止一次的使用过括号了,它不仅能使我们的子表达式独立,也允许我们在外部或表达式内部引用子表达式或结果
分支结构
使用括号可以让分支逻辑更清晰,如下,如果去掉括号,则将以|为分界匹配前半段或后半段
分组引用
分组允许我们在正则中或者匹配结果中获取分组内容
获取分组结果:
表达式中引用分组结果:
使用\1~\n依次按左括号从左到右标识每一个括号的匹配结果,注意
是匹配结果而不是表达式
是按括号从左到右出现的次序
量词
如果括号后使用了量词,则只会将最后一次匹配值作为结果,如下
不使用分组
默认情况下,括号将自动进行分组,如果单纯的想进行分支,则需要使用(?:)进行标识
示例
模拟trim方法
分析:
开头和结尾的空格可能不止一个,故需要使用.*来做匹配
然后对剩余部分作分组后提取即可
剩余部分需要使用贪婪匹配,因为.对空格也是有效的
结果:
首字母转大写
分析:
找到每一个字符的前一个位置
以此位置为起始点向后匹配一个字符
结果:
驼峰化
分析:
当存在分组时,其结果会作为replace参数二的剩余参数传入,故需要跳过特殊符号,如-_\s,将下一位作为分组结果
结果:
逆驼峰化
匹配成对标签
分析:
使用反向引用获取开标签匹配的内容即可
结果: