在 texs 数学模式之外删除大括号
Removing curly braces outside texs math-mode
我想在 texs 数学模式之外删除花括号。例如:
Lorem Ipsum $\mathbb{R}$ dolore. {Author} $\{1,\dotsc,n}$
应该变成:
Lorem Ipsum $\mathbb{R}$ dolore. Author $\{1,\dotsc,n}$
因为你不能真正否定正则表达式,所以我正在研究先行和后行。从技术上讲,这对我不起作用,{Author} 也在两个美元符号之间。一些正则表达式专家对我有什么建议吗?
我希望仅在问题不太复杂时才使用 preg_replace。
您可以使用这个基于前瞻的正则表达式:
$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)
来跳过数学模式块并替换文本其余部分的 {
和 }
:
我想在 texs 数学模式之外删除花括号。例如:
Lorem Ipsum $\mathbb{R}$ dolore. {Author} $\{1,\dotsc,n}$
应该变成:
Lorem Ipsum $\mathbb{R}$ dolore. Author $\{1,\dotsc,n}$
因为你不能真正否定正则表达式,所以我正在研究先行和后行。从技术上讲,这对我不起作用,{Author} 也在两个美元符号之间。一些正则表达式专家对我有什么建议吗?
我希望仅在问题不太复杂时才使用 preg_replace。
您可以使用这个基于前瞻的正则表达式:
$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)
来跳过数学模式块并替换文本其余部分的 {
和 }
: