删除texs math-mode之外的花括号

时间:2016-07-18 15:43:59

标签: php regex curly-braces math-mode

我希望在texs math-mode之外删除花括号。例如:

Lorem Ipsum $\mathbb{R}$ dolore. {Author} $\{1,\dotsc,n}$

应该成为:

Lorem Ipsum $\mathbb{R}$ dolore. Author $\{1,\dotsc,n}$

由于你无法真正否定正则表达式,我正在研究前瞻和后瞻。从技术上讲,这对我不起作用,{作者}也是两美元符号之间。一些正则表达专业人士对我有一些建议吗?

当问题不是太复杂时,我只想使用preg_replace。

1 个答案:

答案 0 :(得分:1)

您可以使用这个基于前瞻性的正则表达式:

$re = '/\$\\\w*{[^}]+}(*SKIP)(*F)|{[^}]*}/'; 
$str = "Lorem Ipsum \$\mathbb{R}\$ dolore. {Author} \${1,\dotsc,n}\$"; 

$result = preg_replace($re, '', $str);

//=> Lorem Ipsum $\mathbb{R}$ dolore.  Author $\{1,\dotsc,n}$ 

RegEx Demo

这里我们使用PCRE动词(*SKIP)(*F)来跳过数学模式块,并在其余文本中替换{}