我有一些mathjax格式的HTML文本:
text = "an inline \\( f(x) = \frac{a}{b} \\) equation, a display equation \\[ F = m a \\] \n and another inline \\(y = x\\)"
(注意:方程式由单斜线分隔,例如\(
,而不是\\(
,额外的\
只是逃避红宝石文本的第一个斜杠。
我希望得到替代它的输出,例如latex.codecogs创建的图像,例如
desired_output = "an inline <img src="http://latex.codecogs.com/png.latex?f(x) = \frac{a}{b}\inline"/> equation, a display equation <img src="http://latex.codecogs.com/png.latex?F = m a"/> \n and another inline <img src="http://latex.codecogs.com/png.latex?y = x\inline"/> "
使用Ruby。我试试:
desired = text.gsub("(\\[)(.*?)(\\])", "<img src=\"http://latex.codecogs.com/png.latex?\2\" />")
desired = desired.gsub("(\\()(.*?)(\\))", "<img src=\"http://latex.codecogs.com/png.latex?\2\\inline\")
desired
但这不成功,仅返回原始输入。我错过了什么?如何正确构造此查询?
答案 0 :(得分:1)
尝试:
desired = text.gsub(/\\\[\s*(.*?)\s*\\\]/, "<img src=\"http://latex.codecogs.com/png.latex?\\1\"/>")
desired = desired.gsub(/\\\(\s*(.*?)\s*\\\)/, "<img src=\"http://latex.codecogs.com/png.latex?\\1\inline\"/>")
desired
必须发生的重大变化:
gsub
的第一个参数应该是正则表达式(如Anthony提到的)\\2
(而不仅仅是\2
)(请参阅rdoc)\
还有其他一些小的格式化内容(空格等)。
答案 1 :(得分:0)
不确定你的正则表达式是否正确 - 但在Ruby中,Regexp由//
分隔,请尝试这样:
desired = text.gsub(/(\\[)(.*?)(\\])/, "<img src=\"http://latex.codecogs.com/png.latex?\2\" />")
你试图做字符串替换,当然gsub没有找到包含(\\[)(.*?)(\\])
的字符串