1

ここでは単純なものですが、私はPythonにはかなり慣れていません。

次のような文字列があります。

this is page one of an article 
<!--pagebreak page two --> this is page two 
<!--pagebreak--> this is the third page 
<!--pagebreak page four --> last page
// newlines added for readability

この正規表現を使用して文字列を分割する必要があり<!--pagebreak(*.?)-->ます<!--pagebreak-->

私はこれを試しました:

re.split("<!--pagebreak*.?-->", str)

改ページに「タイトル」のあるアイテムのみを返しました(また、それらを正しく分割しませんでした)。ここで何が間違っていますか?

4

3 に答える 3

2

間違いなくスワッピングの問題。と *。「。」すべてに一致し、アスタリスクは、取得できる限り多くの文字を使用することを示します(もちろん、貪欲でない修飾子「?」によって制限されます)。

import re

s = """this is page one of an article 
<!--pagebreak page two --> this is page two 
<!--pagebreak--> this is the third page 
<!--pagebreak page four --> last page"""

print re.split(r'<!--pagebreak.*?-->', s)

出力:

['これは記事の1ページ目です\n'、'これは2ページ目です\n'、'これは3ページ目です\n'、'最後のページ']

于 2012-10-04T08:52:22.030 に答える
2

*.?に変更.*?:

re.split("<!--pagebreak.*?-->", str)

現在の正規表現は、任意の数のリテラルを受け入れk、オプションで (任意の文字) が続きます。

また、r"..."正規表現には生の文字列 ( ) を使用することをお勧めします。この場合は必要ありませんが、頭の痛い問題を回避する簡単な方法です。

于 2012-10-04T08:41:03.887 に答える
2

を と交換し.ました*。正しい正規表現は次のとおりです。

<!--pagebreak.*?-->
于 2012-10-04T08:41:35.020 に答える