将乳胶美元符号转换为\(\)

时间:2018-01-20 22:02:56

标签: regex latex

我需要将包含带有美元符号表示法$myformula$的数学的纯文本文件转换为\(myformula\)表示法。但是我想要替换双美元符号$$myformula$$而不是

到目前为止,我手动执行此操作,找到用开头语法\(替换所有带有空格的所有美元符号,并通过关闭语法\)替换所有其他美元符号并更正手工遗留的错误(如行首,双美元唱)。我认为我可以用来通过终端转换多个文件的正则表达式命令可以解决这个问题。

以下是一个示例,看起来应该如下:

在:

  

这是$ a + b_ {k} + c $句子。

     

另一个测试$ s_ \ text {hi} +3 $。

     

$ x = y $那里。

     

$$ y = z $$为什么?

     

$$ Z =ž$$

     

这可能是($ 3 ^ 2 $,$ x_1 $)。

后:

  

This is \(a+b_{k}+c\) sentence. Another test \(s_\text{hi}+3\). \(x=y\) there. $$y=z$$ why? $$z=z$$ This could be (\(3^2\), \(x_1\)).

谢谢!

2 个答案:

答案 0 :(得分:2)

正则表达式([^\$])\$([^\$]+)\$([^\$])
正则表达式(^|[^\$])\$([^\$]+)\$([^\$]|$)
替换$1\\($2\\)$3

3个捕获组相当混乱,但它似乎完全符合要求。

首先捕获不是$的任何内容,然后是$包裹的任何内容,然后是另一个不是$的字符,并将所有字符替换为第二组在括号中,由第一组和第三组包裹。

编辑:第一个捕获组还应检查文件开头的^,第三个组应检查文件末尾的$。新的Demo有一些例子可以在我的第一个声明中破解。

<击> Bad Demo
Good Demo

答案 1 :(得分:1)

正则表达式\$([^\$]+)\$ 替换\\($1\\)

<强>详情:

  • ()捕获小组
  • [^]匹配列表中不存在的单个字符
  • +匹配一次且无限次

<强>输入

$myformula$

<强>输出

Full match  0-11    `$myformula$`
Group 1.    1-10    `myformula`

<强>结果

\(myformula\)

Regex demo