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)

参照

また、2 番目の一致は、残りの文字列全体と一致します。

次のように変更することをお勧めします。

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

+{1,}
.+?1 つ以上のワイルドカード (貪欲ではない)
?=は先読みを意味するのと同じ意味で、次の文字が無効な文字であるか、行末であるか、または" Nr "次の一致の開始であるかをチェックします。

于 2013-03-05T07:33:11.817 に答える