我使用sub()
函數將===Something here===
替換爲<h2>Something here</h2>
。如何使用sub()在多行上匹配模式?
以下工作:
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
)
但我認爲強制該圖案包含一個新行,而不是圖案的可選部分。
如何擴展當前模式,以便足夠靈活地識別新行可能存在的實例?
編輯:
我曾嘗試下面的建議(在寫作時),他們不工作。我能想到的唯一原因是因爲該行中可能還有其他字符。
以下圖像(「空白」設置爲顯示在賽特編輯器中打開帶有「生產線末端」和)正在讀取與原始文本文件的截圖:
original_text_file = open('file.txt', 'U')
單線實例:
多行實例:
我不知道是否需要對這些角色進行其他考慮?
編輯二:從測試下面的另一溶液
結果(關於多實例此沒有執行替換):
Python代碼:
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.
看到我更新的答案 – HennyH