我一直在使用这段代码,似乎是一辈子的事情,似乎无法让它发挥作用。
pattern = "\[([a-zA-Z0-9].*?)#([a-zA-Z0-9].*?)\]"
pattern_obj = re.compile(pattern, re.MULTILINE)
translation = pattern_obj.sub("<ol>\\1</ol>", translation)
我在这里要做的是改变一些文字,即:
[
# This is item number one in an ordered list. #
# And this is item number two in the same list. #
]
分为:
<ol>
#This is item number one in an ordered list. #
#And this is item number two in the same list. #
</ol>
基本上,它应该识别[和]之间的任何文本与文本中的#where,并将[into <ol>
和]更改为</ol>
,同时保持所有内部文本相同。任何人都可以建议吗?
提前谢谢!
答案 0 :(得分:0)
这几乎可以满足您的需求:
>>> re.compile(r"\[([^\]]*)\]").sub("<ol>\\1</ol>", "b[#a]c")
'b<ol>#a</ol>c'
[^\]]
在\[
clsing括号后面的每个字符除外。
使用#
,它看起来像这样:
>>> re.compile(r"\[([^\]]*#[^\]]*)\]").sub("<ol>\\1</ol>", "b[#a]c")
'b<ol>#a</ol>c'
>>> re.compile(r"\[([^\]]*#[^\]]*)\]").sub("<ol>\\1</ol>", "b[gggg]c")
'b[gggg]c'
如果你想在某些东西之间找到某种东西,.
总是有点问题。