如果在正则表达式中,使用(?打头的纯的,不捕获的group?

gogon 2005-09-12 12:26:27
正则表达式中,用()表示group,而括号内捕获的内容可以供后面使用
但是如果我不想捕获,只不过用()表示纯粹的群组,比如说(abd)+,这里我不想捕获,只是为了表示abdabd而已。怎么办呢?JDK里面有
Groups beginning with (? are pure, non-capturing groups that do not capture text and do not count towards the group total
但是没有例子,具体怎么写?
我实验了(?abc)+,(//?abc)+,(?abc?)+,等,都不行,哪位高手指教一下。
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogon 2005-09-12
  • 打赏
  • 举报
回复
谢谢。我没注意到那里也有关于这个的。只去看group部分了
interhanchi 2005-09-12
  • 打赏
  • 举报
回复
^_^,jdk里面有的,我已经帮你帖出来了!
gogon 2005-09-12
  • 打赏
  • 举报
回复
谢谢majy,我试验了一下,果然好用。
最后再问一下,象这种JDK上面没有的,在哪里查找呢?
interhanchi 2005-09-12
  • 打赏
  • 举报
回复
我也在jdk里面找到了!

Special constructs (non-capturing)

(?:X) X, as a non-capturing group
(?idmsux-idmsux) Nothing, but turns match flags on - off
(?idmsux-idmsux:X) X, as a non-capturing group with the given flags on - off
(?=X) X, via zero-width positive lookahead
(?!X) X, via zero-width negative lookahead
(?<=X) X, via zero-width positive lookbehind
(?<!X) X, via zero-width negative lookbehind
(?>X) X, as an independent, non-capturing group
majy 2005-09-12
  • 打赏
  • 举报
回复
晕,看错题目意思了

是你看的不仔细,JDK说的只是(?打头的,问题是关有这个打头是不够的,还需要其他的元素才行的,这样:

(?:abc)

就行了
majy 2005-09-12
  • 打赏
  • 举报
回复
直接(abc)+不就行了

String content = "abcabcxxxabc";
Pattern patt = Pattern.compile("(abc)+");

Matcher match = patt.matcher(content );

if (patch.find())
....
interhanchi 2005-09-12
  • 打赏
  • 举报
回复
不懂,学习!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧