我想捕获由()分隔的字母组,例如:
字符串:ab(cad)xy(bc)an 组应包含:ab,cad,xy,bc,a
我试过这个正则表达式: ([A-Z] +)+ 但它只捕获了最后一组。我读到了关于多次捕获并试过这个: (?:([A-Z] +)+) 但结果是一样的。我在这里做错了。请有人澄清一下吗?
答案 0 :(得分:2)
您不需要捕获组来匹配/捕获字母字符的每个实例。以下正则表达式就足够了,只需引用匹配结果的Group index 0即可。
[a-z]+
答案 1 :(得分:0)
你可以尝试这个:
(([a-z]+)\(([a-z]+)\))+([a-z]+)?
见demo。 但是,您最好知道此类组的最大数量,并使用命名的资产组(如果语言允许)。只有在知道自己捕获的内容时,才能捕获群组。例如。 " AB" ="代码1"," cad" ="加元"," xy" ="数学变量"," bc" ="时代","" ="文章使用"。 :)否则,只需匹配即可,你可以使用Jeffrey的答案。
答案 2 :(得分:0)