java - 正则表达式:?: notation(问号和冒号)

标签 java regex

我有以下 Java 正则表达式,不是我写的,我正在尝试修改:

^class-map(?:(\\s+match-all)|(\\s+match-any))?(\\s+[\\x21-\\x7e]{1,40})$
           ^                                 ^

类似于 this one .

注意第一个问号。这是否意味着该组是可选的?对应的)后面已经有问号了。正则表达式中的冒号有特殊含义吗?

正则表达式编译得很好,并且已经有 JUnit 测试显示它是如何工作的。只是我有点疑惑为什么第一个问号和冒号会出现。

最佳答案

(?: 启动一个非捕获组。它与 ( 没有什么不同,除非您在使用后从正则表达式中检索组。参见 What is a non-capturing group? What does a question mark followed by a colon (?:) mean?

关于java - 正则表达式:?: notation(问号和冒号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530862/

相关文章:

Ruby 与正则表达式分离 - 正则表达式没有做我想做的事

java - 我如何知道为什么我在 com.sun.jdmk.comm.HttpSendSocket 的第 113 行收到 IOException

java - 有没有办法使用 EasyMock 部分模拟一个对象?

python - 使用正则表达式读取 Python 中的文本字段

javascript - 正则表达式:使用/i vs./g(/g 替换空格但/i 不替换)

regex - 正则表达式帮助 - 前瞻

java - Google Eclipse 插件 : Browser Plugin vs. 开发模式

java - 如何创建一个JTabbedPane java?

java - 如何将重复背景图像设置为 JPanel?

regex - Perl 中的字符替换