Java 正则表达式-将所有匹配项作为单个匹配项返回

Java 正则表达式-将所有匹配项作为单个匹配项返回,java,regex,Java,Regex,我正在使用一段代码,将正则表达式应用于字符串并返回第一个匹配项。我没有权限修改代码以返回所有匹配项,也没有能力实现替代代码 我有以下示例目标字符串: 用户A、用户B、用户C、用户D、用户E、用户F、 这是一个由多个源连接而成的逗号分隔用户名列表,其中一些是空的,因此在某些地方有两个逗号。我正在尝试编写一个正则表达式,它将返回除特定值之外的所有逗号分隔的用户名 例如,考虑下面的表达式: [^,]\w{1,},(?<!(userb|userc|userd),) [^,]\w{1,},(? 这

我正在使用一段代码,将正则表达式应用于字符串并返回第一个匹配项。我没有权限修改代码以返回所有匹配项,也没有能力实现替代代码

我有以下示例目标字符串:

用户A、用户B、用户C、用户D、用户E、用户F、

这是一个由多个源连接而成的逗号分隔用户名列表,其中一些是空的,因此在某些地方有两个逗号。我正在尝试编写一个正则表达式,它将返回除特定值之外的所有逗号分隔的用户名

例如,考虑下面的表达式:

[^,]\w{1,},(?<!(userb|userc|userd),)
[^,]\w{1,},(?
这将导致三个匹配:

乌瑟拉

usere

userf

是否有任何方法可以将这些结果作为一个匹配项而不是一个匹配项集合来获取,例如一个包含文本“usera,usere,userf”的匹配项

如果我可以用任何语言编写代码,这将是微不足道的,但我仅限于输入目标字符串和模式,并且我需要一个包含所有项的匹配,除了我省略的项。我不确定这是否可行,我使用regex所做的每件事都涉及处理匹配集合中的多个项。

下面是Regex Coach中的一个示例。此图显示了我想要的三个匹配,但我的要求是将文本包含在单个匹配中,而不是三个单独的匹配中

EDIT1: 澄清此问题的目的是专门解决仅使用正则表达式语法的用例。在代码中解决此问题并不重要,但考虑到执行代码是我不想反向工程、包装或替换的第三方产品的一部分,仅使用正则表达式解决此问题是一项要求

有没有办法将这些结果作为一个匹配项而不是一个匹配项集合来获取,例如一个包含文本
'usera,usere,userf'
的匹配项

不。正则表达式匹配是连续的

正则表达式从头到尾匹配(子)字符串。不能删除中间部分,这不是正则表达式引擎的工作方式。但可以再次应用该表达式以查找另一个匹配的子字符串(增量搜索-正则表达式Coach就是这样做的)。这将导致匹配集合


也就是说,你也可以匹配你不想保留的所有东西,然后删除它,例如

,(?=[\s,]+)|(userb|userc|userd)[\s,]*

您使用的是什么语言?正则表达式不是一种完整的语言;如果没有真正语言中的任何支持代码,可能很难得到您想要的东西。正则表达式是用JAVA处理的,因此它将遵循JAVA的处理规则,但我无法访问底层代码来修改它。这是ut的一部分由于“匹配”是单个子串选择,它不能跳过排除的子串-答案是NoThanks@nhahtdh,但这是一个第三方JIRA插件(用JAVA编写)我想尝试在不修改的情况下实现它。获取源代码或编写自己的代码不是问题。我希望按原样使用它,但似乎不可能。排除使用单个正则表达式的可能性,我可以选择多种替代方法之一