我想转换一个文本,如:
$$
foo
bar
$$
Run Code Online (Sandbox Code Playgroud)
至
<% tex
foo
bar
%>
Run Code Online (Sandbox Code Playgroud)
而$\alpha$到<% tex \alpha %>.
对于单行替换,我这样做:
re.sub(r"\$(.*)\$", r"<% tex \1 %>", text)
Run Code Online (Sandbox Code Playgroud)
......它工作正常.
现在,我添加了多行标志来捕获多行标志:
re.sub(r"(?i)\$\$(.*)\$\$", r"<% tex \1 %>", text)
Run Code Online (Sandbox Code Playgroud)
...但它返回:
<% tex %>
foo
bar
<% tex %>
Run Code Online (Sandbox Code Playgroud)
为什么?我确定这是微不足道的,但我无法想象.
Rya*_*rom 10
我建议使用re.M(多线)标志,并在捕获中吞噬所有不是美元符号的东西.
>>> import re
>>> t = """$$
foo
bar
$$"""
>>> re.sub(r"\$\$([^\$]+)\$\$", r"<% tex \1 %>", t, re.M)
'<% tex \nfoo\nbar\n %>'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9852 次 |
| 最近记录: |