python - 正则表达式替换两个不同字符串之前或之后的字符串
问题描述
我有这个字符串(html):
html = 'x<sub>i</sub> - y<sub>i)<sub>2</sub>'
我想以一种健壮的方式将此 html 字符串转换为乳胶。让我解释:
<sub>SOMETHING</sub>
-> 转换为_{SOMETHING}
我已经知道该怎么做:
latex = re.sub(r'<sub>(.*?)</sub>',r'_{\1} ', html)
- 有时缺少第一部分
<sub>
或其结束标记,例如示例字符串。在这种情况下,输出应该仍然是正确的。
所以我当时的想法是:在运行 1 之后,我在之后<sub>
和之前</sub>
的任何东西_{SOMETHING}
text = re.sub(r'<sub>(.*?)</sub>',r'_{\1} ', html)
print(text)
# if missing part:
text = re.sub(r'<sub>(.*?)',r'_{\1} ', text)
print(text)
latex = re.sub(r'(.*?)</sub>',r'_{\1} ', text)
......但我得到:
x_{i} - y_{i)<sub>2}
x_{i} - y_{i)_{} 2}
x_{i} - y_{i)_{} 2}
我想得到什么:
x_{i} - y_{i})_{2}
解决方案
假设你有被分割成不同部分的文本,对应的<sub>
/</sub>
标签可能位于相邻的段中,所以只需分别替换它们就足够了,你不需要做任何猜测工作。
只需使用
text = text.replace('<sub>', '_{').replace('</sub>', '}')
在任何情况下<sub>
用_{
和</sub>
用替换每个。}
推荐阅读
- database - 无法连接到 postgresql 中的数据库
- git - 当使用 Git Flow 管理发布与开发时,如何追溯应用修补程序?
- c# - 如何在数据库中插入 json 字符串
- c# - 在 C# 中模拟用于单元测试的 tgz、tar、gz 文件
- php - 如何解决 PHPmailer 中的 undefined:index 和以下错误?
- msbuild - TFS Build 2013 避免代码分析
- powershell - foreach 的输入和输出到表中的列
- reactjs - 区块链交易中的 Chrome 扩展问题
- .net - .NET 的缓存实现
- java - Mockito 无法使用谓词函数