2012-01-14 8 views
1

私は正規表現に少し問題があります。Python正規表現と複数回見つけた

私はすべての「記事」コンテンツを自分のテキストで見つけたいと思っています。 2つの記事の間に「章」が存在する可能性がありますが、その時点で私はそれを渡します。イプサム悲しみがdiamArticle 1Maecenas ligulaのマッサ、 は、MI、ゼンパーcongue、euismodの非をVARIUS、AMET座る

章1Lorem:

はここに私のテキスト(なし\ nはありません)です。 Proin porttitor Chapter 2Duis 弓の中の弓2弓の髪の髪の毛3ぬいぐるみ 髪の毛のぬいぐるみ。前庭アンティイプサムprimis faucibus orci luctusらultricesお問い合わせ今cubilia Curae

では、複数の一致を得るために、私は)(私はfindAllの使用しなければならないと思います。 しかし、私はほとんどの正規表現が動作していません。

re.findall(r"""Article\s(?P<number>\d+)(?P<content>.*)""",content,re.UNICODE) 

コンテンツ paramが私のすべてのテキストを取得。 があるからだと思います。* 正規表現はテキストの中で何度もマッチしますか? findall()を使用する必要はありません。正規表現が無効ですか?

だれでも考えがある場合は、 ありがとうございます。

Ps:私はこれを行うには、正規表現を使用して、進捗してください。

答えて

2

Article\sまたは入力が終わるまですべてを飲み込む必要があります。これは肯定先読みテストに続いて怠惰な量指定子を使用して行うことができます。

re.findall(r"""Article\s(?P<number>\d+)(?P<content>.*?)(?=Article\s|$)""",content,re.UNICODE) 

別の解決策は、Article\sに対して分割することですが、その後、あなたは最初に分割さグループを破棄する必要があります。最初から離れた各分割グループは、次に従います。

^(?P<number>\d+)(?P<content>.*)$ 
0

re.findallはOKです。あなたはすべてのマッチからテキストのグループを抽出することができます。

thisの例も参照してください。

関連する問題