4

WebページのLaTexディレクティブを置き換える必要があります。LaTexディレクティブは、$ a ^ 2 + b ^ 2 = 1 $(インライン式)または$$ a ^ 2 + b ^ 2 = 1 $$(ブロック式)のような2つの「$」記号で囲まれます。新しい行に表示されます)。問題は、ブラウザ自体がこれらの数式をLaTexスタイルで表示できないため、Javascriptを使用してstディレクティブをいくつかのpics(これらのディレクティブに対応)に置き換えたいということです。(写真を参照)a ^ 2 + b ^ 2 = 1正規表現を使用してこれを行うにはどうすればよいですか?そして、私はいくつかの問題を抱えて、以下に私の仕事を示しました。インライン数式の場合、次を使用します。

var reg = /\$([^$]|(\\$))*\$(?=[^$])/mg

つまり、テキストを$で開始し、その後に「$ではない」または「\ $」であるかどうかにかかわらず、「$」で終了する必要がありますが、終了後に$の上昇は許可されません。良さそうに聞こえますが、次のようなテキストの場合:$ a ^ 2 \ $ b ^ 2 $どうやら、(画像を参照)a ^ 2 \ $ b ^ 2として表示されることを望みますが、実際には、正規表現は'* replace * b ^2$'のようになります。助けが必要です~~

4

4 に答える 4

2

次の正規表現

/(\${1,2})((?:\\.|.)*)\1/

1ドルまたは2ドルで囲まれたLaTexブロックと一致します。開始タグと一致するように後方参照\1を使用していることに注意してください。

LaTexブロックがovverライン境界を拡張できる場合は、

/(\${1,2})((?:\\.|[\s\S])*)\1/

文字列内のグローバル置換に次のように言いますsource

source.replace (/(\${1,2})((?:\\.|[\s\S])*)\1/g, function (m, tag, src) {
  // m is the entire match
  // tag is '$' or '$$' 
  // src is the internal text

  var rslt = ''; 

  // create what you want to appear in rslt.

  return rslt;
}
于 2012-10-26T05:52:10.307 に答える
1

次の正規表現には、新しい行が含まれています(数式が大きく、複数の行がある場合があります)。

/(\${1,2})[^]*?[^\\]\1/gm

また、区切り文字の外側のテキストも一致させたい場合は、次のようにします。

/(\${1,2})[^]*?[^\\]\1|[^\$]+\1/gm

テスト

于 2018-03-09T09:25:11.223 に答える
0

LaTexはわかりませんが、1行のコードでやりすぎているようです。次のような論理的なifelseステートメントを試してください。

if (var reg =/\$\$(.*?)\$\$/msg
    {block_formula=$1}

elsif (var reg=/\$(.*?)\$/msg
    {inline_formula=$1}

つまり、「regが$$で開始および終了する場合、$$の間にあるものを含むブロック式です。それ以外の場合、regが$で開始および終了する場合、$の間にあるものを含むインライン式です。」

また、正規表現の一部のみを置き換える場合は、必ず-sフラグを付けて、すべてのインスタンスに一致することを確認してください。

于 2012-10-26T04:23:23.160 に答える
0

LaTexはわかりませんが、1行のコードでやりすぎているようです。次のような論理的なifelseステートメントを試してください。

if(var reg = / \ $ \ $(。*?)\ $ \ $ / msg {block_formula = $ 1}

elsif(var reg = / \ $(。*?)\ $ / msg {inline_formula = $ 1}

つまり、「regが$$で開始および終了する場合、$$の間にあるものを含むブロック式です。それ以外の場合、regが$で開始および終了する場合、$の間にあるものを含むインライン式です。」

編集:数式が常に=と数字で終わる場合は、/(\ $ {1,2})(\ S {2,10} = \ d +)$ 1 /のように正規表現を試して、途中でそれらの\$をキャッチします。それでもうまくいかない場合は、一致するものを見つけることができるように、さらに例を挙げてください。

于 2012-10-26T16:24:01.650 に答える