sub()
に置き換える関数を===Something here===
使用しています<h2>Something here</h2>
。
以下が機能しています:
line = sub(r"(===)([a-zA-Z\s]*)(===)", r"<h2>\2</h2>", line)
元のコンテンツの場所:
===Something here===
ただし、元のコンテンツが次の場合は機能しません。
===
Something here
===
私は次のようなことを試しました:
line = sub(r"(===\n)([a-zA-Z\s]*)(===)", r"<h2>\2</h2>", line)
(唯一の変更点は\n
、最初のグループに が追加されたことです)
しかし、パターンのオプションの部分ではなく、パターンに新しい行が含まれていることを強制すると思います。
新しい行が存在する可能性があるインスタンスを認識できるほど柔軟になるように、現在のパターンを拡張するにはどうすればよいですか?
編集:
以下の提案を(執筆時点で)試しましたが、機能していません。私が考えることができる唯一の理由は、その行に他のキャラクターがいる可能性があるからです.
次の画像は、元のテキスト ファイル (「行末」と「空白」を表示するように設定して SciTE エディターで開いたもの) のスクリーンショットです。
original_text_file = open('file.txt', 'U')
単線インスタンス:
マルチライン インスタンス:
これらのキャラクターについて他に考慮する必要があるかどうかはわかりません。
編集 2:
以下の別のソリューションをテストした結果 (これは複数行のインスタンスで置換を実行しませんでした):
パイソンコード:
from re import *
def test_function(text_file):
file_object = open(text_file+'.txt', 'U')
for line in file_object:
line = sub(r"\n?(===)\n?([a-zA-Z\s]*?)\n?(===)\n?\n?", r"<h2>\2</h2>", line)
print line
test_function('my_file')
my_file.txt:
===Something here===
Lorem ipsum lala.
===
Something here
===
Loreum ipsum lala.