1

texs math-mode の外で中括弧を削除したい。例えば:

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

なる必要があります:

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

正規表現を実際に否定することはできないので、先読みと後読みを調べていました。技術的に言えば、{Author} も 2 つのドル記号の間にあるため、うまくいきませんでした。私にアドバイスをしてくれる正規表現の専門家はいますか?

問題が複雑すぎない場合にのみ 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 動詞を使用して数学モード ブロックをスキップし、テキストの残りの部分でand(*SKIP)(*F)を置き換えています。{}

于 2016-07-18T15:48:07.347 に答える