Java 将两个正则表达式合并为一个正则表达式

Java 将两个正则表达式合并为一个正则表达式,java,regex,Java,Regex,我有一个有效的正则表达式:ABC-[0-9]+ 我还有一个正则表达式:DEF-[0-9]+ 但我不知道如何将两者结合起来,使之匹配 我试过ABC-[0-9]+| DEF-[0-9]+,但没有真正起作用 如果重要的话,这些都在Java正则表达式中。如果希望正则表达式匹配以ABC或DEF开头的序列,请尝试以下操作: (ABC|DEF)-[0-9]+ 但是除了|周围的两个空格字符之外,正则表达式也应该匹配: ABC-[0-9]+|DEF-[0-9]+ 这两个正则表达式匹配同一组字符串。要将两个正则

我有一个有效的正则表达式:
ABC-[0-9]+

我还有一个正则表达式:
DEF-[0-9]+

但我不知道如何将两者结合起来,使之匹配

我试过ABC-[0-9]+| DEF-[0-9]+,但没有真正起作用


如果重要的话,这些都在Java正则表达式中。

如果希望正则表达式匹配以
ABC
DEF
开头的序列,请尝试以下操作:

(ABC|DEF)-[0-9]+
但是除了
|
周围的两个空格字符之外,正则表达式也应该匹配:

ABC-[0-9]+|DEF-[0-9]+

这两个正则表达式匹配同一组字符串。

要将两个正则表达式分组,请使用:


(?>ABC-[0-9]+)|(?>DEF-[0-9]+)
试试
(ABC-[0-9]+)|(DEF-[0-9]+)
你说的“它没有真正起作用”是什么意思?你能举一个它不起作用的例子吗?它只是没有抓住绳子。事后看来,这可能是由于空格…这不会导致它只提取ABC和DEF,因为它是Java正则表达式吗?@glowcoder:
(ABC | DEF)-[0-9]+
有捕获组1,该组将捕获
ABC
DEF
。组0仍然存在(一如既往),并将整个字符串与破折号和数字匹配。看到或看到。也就是说,当模式只有一个捕获组时,一些正则表达式框架确实会执行各种特殊处理,但据我所知,Java并不是其中之一。@polyg感谢您的有益解释。