用一个字符串中的括号替换两个单独的正则表达式

时间:2014-11-10 09:32:35

标签: javascript regex latex

我正在尝试用字符串替换带有两个分数“x = {2x-21} / {x + 12} + {x + 3} / {x-5}”的字符串 “x = \ frac {2x-21} {x + 12} + \ frac {x + 3} {x-5}”(即从jqMath转换为LaTex)。

为实现这一目标,我编写了以下代码:

var initValue = "(\{.*\}(?=\/))\/(\{.*\})";
var newValue = "\\frac$1$2";
var re = new RegExp (initValue,"g");
var resultString = givenString.replace(re,newValue);
return resultString;

此代码似乎适用于只有一个分数的字符串(例如“x = {2x-21} / {x + 12}”)但是当我尝试将它应用于具有两个分数的示例时,结果是x = \压裂{2X-21} / {X + 12} + {X + 3} {X-5}。据我所知,正则表达式引擎捕获{2x-21} / {x + 12} + {x + 3}作为第一组,{x-5}作为第二组。有没有办法用正则表达式得到我想要的结果?

同样的问题适用于具有多个非嵌套分隔符的其他模式,例如:“我喜欢咖啡(拿铁除外)和茶(包括薄荷茶)”。是否可以在括号中捕获两个语句?

如果没有,我可能必须为此编写一个函数(这没关系,但我想确保这是正确的方法)。

1 个答案:

答案 0 :(得分:1)

({[^}]+})\/({[^}]+})

试试这个。参见demo.Replace by \\frac$1$2

http://regex101.com/r/tF5fT5/24