java正则表达式

傻傻躺着 发布于 2016/11/08 11:26
阅读 744
收藏 0
        Pattern pa = Pattern.compile(".*(.)(.*\\1).*");
        Matcher matcher =pa.matcher("abca");

        System.out.println(matcher.matches());//最后输出的是true,因为a出现两次,这个正则表达式就是来验证是是否有相同的字符存在。


问题是这个正则看不懂。

加载中
1
echooy
echooy

https://regexper.com/

这个网址你输入.*(.)(.*\1).* 图形化解释,秒秒钟看懂

echooy
echooy
回复 @Ta真的很棒 : 你浏览器搜索下正则回溯引用,就会非常清楚了。
echooy
echooy
回复 @Ta真的很棒 : 这是正则表达式的回溯引用,匹配前一个匹配到的表达式。
傻傻躺着
傻傻躺着
回复 @echooy : 这个是用到了正则的反向引用,可是不怎么理解,你理解吗?
傻傻躺着
傻傻躺着
那你理解这个表达式的意思吗,分析一下,我就帮你顶一下
echooy
echooy
回复 @Ta真的很棒 : 顶一个,赚积分,嘿嘿
下一页
0
zzzzz_aa
zzzzz_aa
哪里看不懂 \\1吗? \\1指代的是前面一个括号的内容 这里是一个.  这么说明白了吗?
zzzzz_aa
zzzzz_aa
.*表示匹配所有 (.) 表示匹配一个字符 (.*\\1) 表示匹配前一个括号里的内容 整个意思就是说 先拿出一个字符 然后再后面的字符中找有没有跟这个匹配的.希望你能理解..建议看看精通正则表达式这本书.理解会更深刻一些.希望能帮到你
傻傻躺着
傻傻躺着
求具体分析一下,还不是很理解
0
袁国涛
袁国涛
嗯,高级,效率如何?比如256长度的字符串,呵呵,会不会跑瞎了浏览器
傻傻躺着
傻傻躺着
匹配到了,还会继续匹配下去吗,还是直接返回?
返回顶部
顶部