gpt4 book ai didi

java - Java 中的正则表达式在替代匹配中使用相同的组

转载 作者:行者123 更新时间:2023-12-04 16:36:44 25 4
gpt4 key购买 nike

我有一个匹配不同表达式的正则表达式模式,但我希望两个匹配项都在同一个捕获组中。目前我得到以下正则表达式:

-([^\s"]+)|-"(.+?)"

这实际上同时匹配 (-hello -"Hello World"),但在不同的组中(-hello = group1 和 "Hello World"= group2)。

事实上,我得到了一个工作示例,不幸的是,这在 Java 正则表达式中是不可能的:

(?|-([^\s"]+)|-"(.+?)")

最佳答案

一种选择是使用环视断言,这样您就可以摆脱所有捕获组并获得完全匹配的结果:

(?<=-)[^\s"]+|(?<=-")[^"]*(?=")

RegEx Demo

Pattern p = Pattern.compile("(?<=-)[^\\s\"]+|(?<=-\")[^\"]*(?=\")");

List<String> res = p.matcher("(-hello -\"Hello World\")")
.results()
.map(MatchResult::group)
.collect(Collectors.toList());

//=> [hello, Hello World]

关于java - Java 中的正则表达式在替代匹配中使用相同的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68936149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com