什么是正则表达式"独立捕获组"?

时间:2020-03-05 18:49:36  来源:igfitidea点击:

从Java 6模式文档中:

Special constructs (non-capturing)
  
  (?:X)   X, as a non-capturing group
  
  …
  
  (?>X)   X, as an independent, non-capturing group

(?:X)(?> X)之间有什么区别?在这种情况下,独立意味着什么?

解决方案

回答

这意味着分组是原子的,并且会丢弃匹配组的回溯信息。因此,该表达式是所有格;即使这样做是正则表达式整体成功的唯一途径,它也不会退缩。它是"独立的",即它不会通过回溯与正则表达式的其他元素协作来确保匹配。

回答

如果你有foo(?>(co)*)co,那将永远不会匹配。我敢肯定有一些实用的例子说明什么时候有用,请尝试O'Reilly的书。