美文网首页
分享一个正则表达式的面试问题

分享一个正则表达式的面试问题

作者: 麦德漂 | 来源:发表于2019-05-14 10:33 被阅读0次

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

    test = "userInfo";

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

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

    小同事大概觉得是应该输出user_info,但是又不确定,我回复他输出结果确实是这个。

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

    在正则里,使用()可以捕获到匹配的组,分组按匹配结果按序号排列,分组1,分组2。。。。。

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

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

    下划线连接,最后全部转换为小写。

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

    相关文章

      网友评论

          本文标题:分享一个正则表达式的面试问题

          本文链接:https://www.haomeiwen.com/subject/pbjooqtx.html