Tag: capture group

java regex – 捕获重复的组

我正在使用Java的正则表达式库。 我想根据以下格式validation字符串: 31,5,46,7,86(…) 数量不明。 我想确保该字符串中至少有一个数字,并且每两个数字用逗号分隔。 我也想从字符串中获取数字。 ( 注意:这只是一个简化的例子,string.split不会解决我的实际问题) 我写了以下正则表达式: ({[0-9]++)((?:,[0-9]++)*+) validation部分有效。 但是,当我尝试提取数字时,我得到2组: Group1: 31 Group2: ,5,46,7,86 regex101版本: https ://regex101.com/r/xJ5oQ6/3 有没有办法可以分别得到每个号码? 即结束集合: [31, 5, 46, 7, 86] 提前致谢。

Java Pattern打印捕获组

((\d{1,2})/(\d{1,2})/(\d{2,4})) 有没有办法使用Pattern对象检索所有捕获组的列表。 我调试了对象,它说的是有多少组(5)。 我需要检索以下捕获组的列表。 输出示例: 0 ((\d{1,2})/(\d{1,2})/(\d{2,4})) 1 (\d{2})/(\d{2})/(\d{4}) 2 \d{2} 3 \d{2} 4 \d{4} 更新: 我不一定要问是否存在正则表达式,但这是最有利的。 到目前为止,我已经创建了一个基本的解析器(我没有检查大多数越界条件),它只匹配最内层的组。 我想知道是否有办法保持对已访问过的括号的引用。 我可能要实现树结构? import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class App { public final char S = ‘(‘; public final char E = ‘)’; public final char X = ‘\\’; String errorMessage = “Malformed expression: […]

非捕获组是多余的吗?

可选的非捕获组是多余的吗? 是以下正则表达式: (?:wo)?men 语义上等同于以下正则表达式? (wo)?men