2013-03-05 41 views
0

我需要匹配下面的正则表达式,并希望得到最终的组。要搜索正则表达式与分组,如何终止组?

字符串:

Products in these categories Nr 24432 in Kitchen (Bestsellers) Nr 11 in Home Improvement > Garden Nr 25 in Hobby > Gärtnerei 

预期结果:

"Kitchen","Home Improvement > Garden", "Hobby > Gärtnerei" 

这是我想出了迄今为止正则表达式,但只有第一个occurrance匹配。 任何想法?

Nr [0-9]{1,} in ([0-9A-z >&äÄüÜöÖ]{1,}) 
+2

这是什么语言?作为匹配所有东西的各种方法(而不仅仅是第一场比赛),通常取决于语言。 – Daedalus 2013-03-05 07:11:19

+0

我正在做这个python。 – Jabb 2013-03-05 07:37:02

回答

2

不知道你如何目前正试图与它们匹配,但这应该工作:

text = "Products in these categories Nr 24432 in Kitchen (Bestsellers) Nr 11 in Home Improvement > Garden Nr 25 in Hobby > Gärtnerei " 
for m in re.finditer(r"Nr [0-9]{1,} in ([0-9A-z >&äÄüÜöÖ]{1,})", text): 
    print m.group(1) 

Reference

此外,你的第二个匹配将匹配整个字符串的其余部分。

我建议将其更改为类似:

Nr [0-9]+ in (.+?)(?=[^0-9A-z >&äÄüÜöÖ]|$| Nr) 

+的含义一样{1,}
.+?指一个或多个野生卡(非贪婪)
?=手段先行,所以它检查下一个字符是否为无效字符,行尾或" Nr " - 下一个匹配的开始。

+0

谢谢!这是为Python。 – Jabb 2013-03-05 07:35:49

+0

@Jabb请参阅编辑。 – Dukeling 2013-03-05 07:46:30

+0

感谢数百万。作品 – Jabb 2013-03-05 18:06:01