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

时间:2017-12-15 16:19:45

标签: regex regex-group recurring

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

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(没有+)?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

Demo

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

Regex groups