正则表达式捕获组

时间:2015-03-05 21:09:38

标签: regex

我想捕获由()分隔的字母组,例如:

字符串:ab(cad)xy(bc)an 组应包含:ab,cad,xy,bc,a

我试过这个正则表达式: ([A-Z] +)+ 但它只捕获了最后一组。我读到了关于多次捕获并试过这个: (?:([A-Z] +)+) 但结果是一样的。我在这里做错了。请有人澄清一下吗?

3 个答案:

答案 0 :(得分:2)

您不需要捕获组来匹配/捕获字母字符的每个实例。以下正则表达式就足够了,只需引用匹配结果的Group index 0即可。

[a-z]+

答案 1 :(得分:0)

你可以尝试这个:

(([a-z]+)\(([a-z]+)\))+([a-z]+)?

demo。 但是,您最好知道此类组的最大数量,并使用命名的资产组(如果语言允许)。只有在知道自己捕获的内容时,才能捕获群组。例如。 " AB" ="代码1"," cad" ="加元"," xy" ="数学变量"," bc" ="时代","" ="文章使用"。 :)否则,只需匹配即可,你可以使用Jeffrey的答案。

答案 2 :(得分:0)

对于非括号组:

([^\)\(]+)

对于信件组:

([A-z]+)

在所有情况下 - http://regexpal.com都是你的朋友。