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"

这是我到目前为止想出的正则表达式,但它只匹配第一次出现。有任何想法吗?

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

1 回答 1

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)

参考

此外,您的第二场比赛将匹配整个其余的字符串。

我建议将其更改为:

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

+表示相同{1,}
.+?表示一个或多个通配符(非贪婪)
?=表示先行,因此它检查下一个字符是否为无效字符、行尾或" Nr "- 下一个匹配的开始。

于 2013-03-05T07:33:11.817 回答