编辑: regex及其测试、示例和解决方案:https://www.regex101.com/r/rY7uI4/2
我正在尝试转换一个TeX内容(我们将假定它包含在变量foo
中),以便分隔符$$
将转换为标准TeX \[
和\]
。我一直在玩regex101,但直到现在没有运气。你知道吗
理想情况下,预期结果是:
text
$$ math $$
$$
math
$$
text $$math$$ text
输出如下
text
\[ math \]
\[
math
\]
text \[math\] text
也许regexp不是最好的工具,但是我没有找到其他工具来完成这个任务。谢谢你的帮助!你知道吗
编辑: 要添加更复杂(更真实)的测试用例:
$$\alpha \quad \beta \quad \varepsilon \quad \varphi \quad \mathbb{R} \quad \mathcal{C}([0,1]) \quad \mathfrak{R}([0,2\pi]) \quad \mathscr{C}(\mathbb{R})$$
$$\vec{x} \in \mathbb{R}^n, \quad \underline{x}\in \mathbb{R}^m, \quad \mathbf{x}\in \mathbb{R}^m \$$$string
应导致:
\[\alpha \quad \beta \quad \varepsilon \quad \varphi \quad \mathbb{R} \quad \mathcal{C}([0,1]) \quad \mathfrak{R}([0,2\pi]) \quad \mathscr{C}(\mathbb{R})\]
\[\vec{x} \in \mathbb{R}^n, \quad \underline{x}\in \mathbb{R}^m, \quad \mathbf{x}\in \mathbb{R}^m \$\]string
注意在第二个字符串的末尾有一个转义$。你知道吗
使用非贪婪正则表达式。你知道吗
如果您不想考虑转义的美元符号,那么使用负的lookback来检查最后一个
$$
前面是否有反斜杠字符。你知道吗在开始处添加DOTALL修饰符
(?s)
,使正则表达式中的点也与换行符(换行符)匹配。你知道吗可以将
re.sub
与capturing groups一起使用,如下所示:\1
是正则表达式模式中匹配的第一个组,在本例中(\w+)
编辑:如果你在
$$
之间有更多的文本,当你添加到你的编辑中时,你只需要改变\w
与.+
匹配的单词字符来匹配任何长度超过1的字符。你知道吗相关问题 更多 >
编程相关推荐