正则表达式 - 基于模式捕获组

Regex - Capturing a group based on a pattern

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

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

AA/8*G+8*G+8*G+8*G/带*

AA/8G+8*G+8*G+8*G/混合,暂不支持

使用以下正则表达式:

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

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

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

有什么办法可以把最后的8G(没有+)包含在组里吗?

AA/(8\*?G\+?)+/

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

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

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

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

Demo

想法是将数字(新 </code>)的捕获与字母(<code>)分开,并在 ([\*]*[\+]?)+ 末尾的重复组中使用这两个捕获表达式。