-1

私はこの次のコードを取得しようとしています:

pattern = r"#(.*?)#"
pattern_obj = re.compile(pattern, re.MULTILINE)
translation = pattern_obj.sub("<li>\\1</li>", translation)

# で囲まれたテキストを検索します。最初のインスタンスを置き換えます

>>><li> TEXT </li>

# More TEXT #

# Even more TEXT #

誰か助けてくれませんか?

よろしくお願いします!

編集:私はそのように問題を修正しました。

pattern = r"#([^#]*)#"
pattern_obj = re.compile(pattern, re.MULTILINE)
translation = pattern_obj.sub("<li>\\1</li>", translation)
4

1 に答える 1

-1

ドキュメントから:

(ドット) デフォルト モードでは、これは改行以外の任意の文字に一致します。DOTALL フラグが指定されている場合、これは改行を含む任意の文字に一致します。

.は改行に一致しないため、式は最初の行のみを一致として検出します。

ただし、DOTALLフラグを設定しても役に立ちません。正規表現の特殊文字は、一般的に言えば貪欲であるため、最初#の と最後の の間のすべてのテキストに一致することになります#

私は間違っているかもしれませんが、これを行ごとに行う必要があると思います。

于 2013-05-29T00:53:39.473 に答える