如何使用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获取嵌套在另一个组中的重复组?
为什么不试试这个?
(?: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