1

「\cite{foo123a}」を「[1]」に置き換えたい。これまでのところ、テキストを次のコマンドに置き換えることができました

body.replaceText('.cite{foo}', '[1]');

しかし、私はなんとか使用することができませんでした

body.replaceText('\cite{foo}', '[1]');
body.replaceText('\\cite{foo}', '[1]');

なんで?

まったく働けない逆変換

body.replaceText('[1]', '\\cite{foo}');

これは、[]ではなく「1」のみを置き換えます。これは、[]が正規表現文字セットとして解釈されることを意味します。これらをエスケープしても役に立ちません。

body.replaceText('\[1\]', '\\cite{foo}');//no effect, still a char set
body.replaceText('/\[1\]/', '\\cite{foo}');//no matches

ドキュメントには次のように記載されています

キャプチャグループやモード修飾子など、JavaScriptの正規表現機能のサブセットは完全にはサポートされていません。

サポートされているものとサポートされていないものの完全な説明を見つけることができますか?

4

1 に答える 1

5

私はGoogleAppsScriptに精通していませんが、これは通常の正規表現の問題のように見えます。

'\[1\]'文字列リテラルは。とまったく同じであるため、2番目の変換は機能していません'[1]'\[1\]テキストを文字列リテラルとして引用します。これは、を意味し'\\[1\\]'ます。文字列リテラル内のスラッシュには、関連する意味はありません。その場合、テキストに一致するパターンを作成しました/1/

は文字通りの中括弧ではなく数量詞を示しているため、最初の変換は機能していません。{...}したがって、が必要\\\\cite\\{foo\\}です。\(4つの円記号は、正規表現のリテラルと一致するために\\、であり、それを文字列リテラルにするためです\\\\— 2つのエスケープされた円記号。)

于 2012-06-11T13:07:00.177 に答える