-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标志也无济于事。由于正则表达式特殊字符通常是贪婪的,因此您最终会匹配 first#和 last之间的所有文本#

我可能弄错了,但我相信您需要逐行执行此操作。

于 2013-05-29T00:53:39.473 回答