如何使用regex获取重复组

本文关键字:获取 何使用 regex | 更新日期: 2023-09-27 18:25:51

我有这个字符串,例如:

Something`3[[typeOne],[typeTwo],[typeThree]][[typeOne],[typeTwo],[typeThree]]

可以包含N种类型:

[[type1],...,[typeN]]

我想提取这些内部typeX字符串(type1,…,typeN)。我使用这个模式(忽略空白-这只是为了可读性):

'[
   (?:,?'[
      ([^']]*)
   '])+
']

但它只给了我最后一种类型(typeN)。如何使用regex获取所有typeX字符串?

编辑:

实际上,真正的问题是

Something`3[[typeOne],[typeTwo],[typeThree]]

可以包含N种类型:

Something`N[[type1],...,[typeN]]

我的正则表达式是:

(?:`(?<count>'d+)'[
   (?:,?'[([^]]+)'])+
'])

很抱歉在中间更改了问题,我试图简化问题的输入,下面的一些解决方案(Avinash Raj)确实解决了之前的输入,但不是这个。。。

编辑2:

为了可读性,我似乎过于简化了我的问题。。。这是我实际和完整的要求:

如何使用regex获取嵌套在另一个组中的重复组?

如何使用regex获取重复组

为什么不试试这个?

(?:Something(?:`('d+))?'[|(?<!^)'G)'[*([^'['],'s]*)

演示

当您可以使用regex时,不用担心它。

var str = "[[typeOne],[typeTwo],[typeThree]]";
var arr = str.Replace("[","").Replace("]","").Split(','); // easy-peasy

DEMO

只需使用'w+:它匹配括号之间列表中的所有元素。如果需要捕获,只需添加括号:('w+)

^.*?('d+)|^.*?'[|']$|'[('w+)']

你可以试试这个。请参阅演示。

http://regex101.com/r/hQ1rP0/37