日期:2014-05-20  浏览次数:20609 次

正则 () 的用法问题

我在网上搜到的相关内容中提到这种错误匹配的交替行为,我测试的时候并没有出现,请问这个错误匹配是在什么情况下发生的???
网上相关描述:
1.正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本。
 

    3.3 错误匹配的交替行为,

       使用交替行为时,有时会出现意想不到的错误。

       eg. 用(a|ab)匹配ab时,只能匹配a,但是如果用(ab|a),则可以匹配ab
正则表达式 正则

------解决方案--------------------
改用[a
------解决方案--------------------
ab]
------解决方案--------------------
(a
------解决方案--------------------
ab) = ((a
------解决方案--------------------
a)b)
(ab
------解决方案--------------------
a) = (a(b
------解决方案--------------------
a))
------解决方案--------------------
引用:
Quote: 引用:

Pattern p = Pattern.compile("(a
------解决方案--------------------
ab)");
Matcher m = p.matcher("ab");
System.out.println(m.matches());
System.out.println(m);
System.out.println(m.group());

执行结果:

true
java.util.regex.Matcher[pattern=(a
------解决方案--------------------
ab) region=0,2 lastmatch=ab]
ab
 就是这样的这种运行的时候ab是可以匹配上的 为什么网上说会有错误匹配呢?

不管别人怎么说,俺总是习惯性的跑一下试试的~