.
解决方案 »
- dos下运行java程序 Package的问题
- Java,两个JPanel之间怎么传值
- ██保留小数点后两位,不足两位补0 ???██
- 如何实现下列程序的数组输出??
- 想请教下有没有人做过SAPJCO在solaris服务下的websphere联调的问题
- 关于native,transient,volatile三个关键字的使用
- ImageIO out of memory
- 求socket怎么样在服务端群发消息?
- 100分求javaworld离线版
- java 能否有 MDI窗体.
- Comparable接口中的comareTO()与Comparator接口中的compare()的区别
- 有关textField获得聚焦的问题
这个是非捕获组,其实这个对结果不影响的,只是说你这个括号不是分组,只是为了吧一段规则包含起来。因为保存分组需要时间和内存,给你个例子。这个。呵呵。也算是抄的吧。别的网上看的(?:(\w)\1)+
这里有几个分组?答案是1个。就是(\w),然后\1就是对(\w)这个分组的引用。而外面的(?:)就不是分组了。但是我需要多个(\w)\1的时候,我需要引用(\w),但对外面的,不需要取这个分组。就可以取消这个分组,这个是关系到效率的问题。在海量数据检索的时候。使用非捕获组可以提高一点效率。这个我检查过,大约用非捕获组可以提高10%~20%的效率。(?>X)
这个是原子组。我就不解释了。直接帖给你:
原子组的目的是使正则引擎失败的更快一点。因此可以有效的阻止海量回溯。原子组的语法是<<(?>正则表达式)>>。位于(?>)之间的所有正则表达式都会被认为是一个单一的正则符号。一旦匹配失败,引擎将会回溯到原子组前面的正则表达式部分。前面的例子用原子组可以表达成<<^(?>(.*?,){11})P>>。一旦第十二个字段匹配失败,引擎回溯到原子组前面的<<^>>。