1

我想在 texs 数学模式之外删除大括号。例如:

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

应该变成:

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

因为你不能真正否定正则表达式,所以我正在研究前瞻和后瞻。从技术上讲,这对我不起作用,{Author} 也在两个美元符号之间。一些正则表达式专业人士对我有一些建议吗?

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

4

1 回答 1

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}$ 

正则表达式演示

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

于 2016-07-18T15:48:07.347 回答