我有这样的字符串,例如:如何使用正则表达式获得重复组?
Something`3[[typeOne],[typeTwo],[typeThree]][[typeOne],[typeTwo],[typeThree]]
可包含N种:
[[type1],...,[typeN]]
我想提取这些内部typeX
字符串(type1
,...,typeN
)。我使用这个模式(忽略空格 - 它只是可读性):
\[
(?:,?\[
([^\]]*)
\])+
\]
但它给我的只有最后一种类型(typeN
)。如何使用正则表达式获得所有typeX
字符串?
编辑:
其实,真正的问题是
Something`3[[typeOne],[typeTwo],[typeThree]]
可包含N种:
Something`N[[type1],...,[typeN]]
我的正则表达式是:
(?:`(?<count>\d+)\[
(?:,?\[([^]]+)\])+
\])
对不起改变这个问题Ë中,我试图简化问题的输入,并some solution below (Avinash Raj)并解决现有的输入,但不是这一个...
编辑2:
我似乎过于简化我的问题,为求可读性的...这是我的真实和充分的要求:
How to get repeating groups that nest within another group with regex?
您的解决方案几乎是它,但我的问题是一个比较复杂 - 请我的编辑... – Tar 2014-10-07 10:29:19
所以要匹配中的字符串'[]'只有上线,其包含'某物号码'。我对么? – 2014-10-07 10:31:24
是的。我也想得到数字和领先的'Something',但数字和'[]'组都可以丢失,所以它都在一个组中(为了让我有条件:它可以是'Something '2 [[One],[Two]]'或者只是'Something',所以我想把它放在有条件的非捕获组中:'(?:...)?' – Tar 2014-10-07 10:36:53