Java模式/匹配器-获取组值

Java模式/匹配器-获取组值,java,regex,Java,Regex,我使用if matcher.find{…}来获取找到的所有组,但如果找不到该组,如何从正则表达式中获取该组的值呢 例如,正则表达式是带有字符串GGG的?WW??GGG??AA 我将得到这样的组:null、GGG、null,但是我如何从regex中得到像WW和AA这样的值呢?只有在动态定义模式,然后检查每个匹配组是否匹配的情况下,如果不使用这些变量,我才能得到这些值。在使用命名组时,只需使用matcher.groupid即可得到组的值,matcher.groupissuer或matcher.gro

我使用if matcher.find{…}来获取找到的所有组,但如果找不到该组,如何从正则表达式中获取该组的值呢

例如,正则表达式是带有字符串GGG的?WW??GGG??AA


我将得到这样的组:null、GGG、null,但是我如何从regex中得到像WW和AA这样的值呢?

只有在动态定义模式,然后检查每个匹配组是否匹配的情况下,如果不使用这些变量,我才能得到这些值。在使用命名组时,只需使用matcher.groupid即可得到组的值,matcher.groupissuer或matcher.groupoptId。请注意,只有当输入匹配器的字符串映射到该正则表达式时,才会出现值。在您的GGG情况下,它只与issuer组匹配,如果您指定WWGGG,您将获得WW作为id组,GGG作为issuer组,因此forthI正在执行一项任务来恢复代码,因此我不能向字符串添加任何内容,因为它可能是随机的,我只需要从正则表达式中获取那些硬编码的值,而不是从字符串中获取。所以当我使用GGG时,我想从正则表达式而不是从输入字符串中获取WW和AA,这是可能的吗?它不是这样工作的。如果输入字符串是GGGWW呢?由于位置0处的匹配尝试,您是否希望组为null、GGG、null,或者由于位置3处的匹配尝试,您是否希望组为WW、null、null?由于逻辑是在从左到右的每个位置尝试匹配,因此最后一次在位置5尝试的结果必须为null、null、null。在实践中,当引擎意识到不可能在以后的位置找到匹配项时,它可能会提前退出,但这是一个没有向调用者显示的优化。所以逻辑是,没有不匹配的组值。正则表达式不是一个值,而是一个模式。像WW这样只与文本字面匹配的模式是一个特例。没有匹配项时,.*的“值”是什么?