【正则】驼峰命名转下划线

前段时间有小同事出去面试,微信发了我一个笔试题,须要给出结果,大概以下:java

test = "userInfo";

reg = "([a-z])([A-Z])";

System.out.println(test.replaceAll(reg, "$1_$2").toLowerCase());

小同事大概以为是应该输出user_info,可是又不肯定,我回复他输出结果确实是这个。web

我问了两个身边的同事,结果犹犹豫豫给不出答案,唉,所谓的高级工程师,居然搞不懂正则分组捕获,反向引用。面试

在正则里,使用()能够捕获到匹配的组,分组按匹配结果按序号排列,分组1,分组2。。。。。正则表达式

后面的$1,$2表示引用刚才匹配到的分组。微信

显然题中的正则表达式是匹配一个小写字母紧邻一个大写字母,并将原字符串的匹配项替换为以svg

下划线链接,最后所有转换为小写。spa

最后使用分组捕获咱们能够轻松将手机号脱敏处理,请读者自行思考一下吧。code

以为有用,点个关注:
在这里插入图片描述xml