正则表达式:如何将可选字符匹配到同一组,合并浮点数与整数分组
解决方案
你可以用合并正则+非捕获组的方式实现仅保留2个捕获组的需求,具体调整如下:
最终正则表达式
^(\d+(?:\.\d+)?)\s+(NUM\d+);?$
正则说明
^:匹配行起始位置,确保从每行开头匹配(\d+(?:\.\d+)?):捕获组1,匹配整数或浮点数:\d+:匹配整数部分(?:\.\d+)?:非捕获组(用?:标记),匹配可选的小数部分(.+数字),这部分不会生成额外分组
\s+:匹配一个或多个空格/制表符(替代[ \t]+更简洁)(NUM\d+):捕获组2,匹配完整的NUMx标识(比如NUM0、NUM1);?$:匹配行尾可选的分号,兼容文本末尾的符号
匹配验证
针对你的待匹配文本:
1.5707963267949 NUM0 ; 0 NUM1 ; 0 NUM2 ; 0 NUM3 ; 0 NUM4 ; 0 NUM5 ;
每个匹配项都会生成两个分组:
- 第一组:数值(
1.5707963267949、0等) - 第二组:
NUMx标识(NUM0、NUM1等)
完全符合你期望的(数值,NUMx)分组形式。
内容的提问来源于stack exchange,提问作者megaMind
相关产品推荐
相关产品推荐

