我正在使用该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')
单行实例:
多行实例:
不知道这些角色是否需要考虑其他因素?
编辑二:
测试下面另一个解决方案的结果(这没有在多行实例上执行替换):
蟒蛇代码:
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.