正则表达式 - 根据模式捕获组

问题描述 投票:1回答:2

我正在尝试提取匹配模式,如:

AA / 8G + 8G + 8G + 8G /无*

AA / 8 * G + 8 * G + 8 * G + 8 * G / WITH *

AA / 8G + 8 * G + 8 * G + 8 * G /混合,这是不支持的

使用以下正则表达式:

https://regex101.com/r/zemJ8H/1

但它只匹配8G + 8G + 8G +

因为模式被识别为8G ** + **

有没有办法在组中包含最后的8G(没有+)?

regex regex-group recurring
2个回答
0
投票

这个表达式处理所有三种情况,包括混合情况:

(?<=/)([0-9]{1,2})[*]*([GM])[+]?(\1[*]*\2[+]?)+

Demo

这个想法是从字母(\1)中分离出数字(新的\2)的捕获,并在表达式结尾处使用重复组(\1[\*]*\2[\+]?)+中的两个捕获。

Regex groups


0
投票
AA/(8\*?G\+?)+/

https://regex101.com/r/zemJ8H/2

这样的事情怎么样? AA后跟一个计划,然后是任意数量的序列,其中含有8个,任选的a *,a G和任选的a +,最后是a +。

© www.soinside.com 2019 - 2024. All rights reserved.