小编use*_*795的帖子

Java Matcher组:理解"(?:X | Y)"和"(?:X)|(?:Y)"之间的区别

谁能解释一下:

  1. 为什么下面使用的两种模式给出不同的结果?(以下回答)
  2. 为什么第二个例子的组计数为1,但是组1的开始和结束是-1?
 public void testGroups() throws Exception
 {
  String TEST_STRING = "After Yes is group 1 End";
  {
   Pattern p;
   Matcher m;
   String pattern="(?:Yes|No)(.*)End";
   p=Pattern.compile(pattern);
   m=p.matcher(TEST_STRING);
   boolean f=m.find();
   int count=m.groupCount();
   int start=m.start(1);
   int end=m.end(1);

   System.out.println("Pattern=" + pattern + "\t Found=" + f + " Group count=" + count + 
     " Start of group 1=" + start + " End of group 1=" + end );
  }

  {
   Pattern p;
   Matcher m;

   String pattern="(?:Yes)|(?:No)(.*)End";
   p=Pattern.compile(pattern);
   m=p.matcher(TEST_STRING);
   boolean f=m.find();
   int count=m.groupCount(); …
Run Code Online (Sandbox Code Playgroud)

java regex regex-group

7
推荐指数
2
解决办法
7967
查看次数

标签 统计

java ×1

regex ×1

regex-group ×1