{すべてのコンテンツ}^{^}を\ hat {all-content}に置き換えようとしています。そして、文字列と予想される出力は、ここでカスタムブラケットを特定のコンテンツに置き換えます。
|---------------------|-------------------|-------------------|
| String Input | Expected Result | What I get |
|---------------------|-------------------|-------------------|
| {A}^{^} | \hat{A} | \hat{A} |
|---------------------|-------------------|-------------------|
| {{A}_{22}}^{^} | \hat{{A}_{22}} | \hat{{A}_{22}} |
|---------------------|-------------------|-------------------|
| {A}_{X-1} {B+2}^{^} |{A}_{X-1} \hat{B+2}|\hat{A}_{X-1} {B+2}|
|---------------------|-------------------|-------------------|
| {A+{B}^{^}}^{^} | \hat{A+\hat{B}} | \hat{A+{B}}^{^} |
|---------------------|-------------------|-------------------|
...のような正規表現でなければなりません。..
str = str.replace(/\{(.*?)\}\^\{\^\}/g, "\\hat{$1}")
str = '{A}^{^} this is sample content {{A}_{22}}^{^} with more complex structure {A}_{X-1} {B+2}^{^} another content with multi level content {A+{B}^{^}}^{^}';
str = str.replace(/\{(.*?)\}\^\{\^\}/g, "\\hat{$1}");
console.log(str)
更新: {...} - - >には、任意の文字、特殊文字またはユニコード記号を使用できます。ネストされた中括弧の複数のレベルも含まれます。
これは正規表現で可能ですか?ない場合には、各試合は^{^}
と{
の同じ番号が含まれていますが、ほとんどの場合で動作するはずと仮定しているため、他の選択肢..
「** words **」では、オープニング '{...} 'の内容のルールは何ですか。 –
{...}は[tex](https://en.wikipedia.org/wiki/TeX)形式になります...一般的に特殊文字とユニコード記号を含む任意の文字 – mimind
4番目の例ではネストされた構造体の場合、JavaScriptの正規表現はこれを単独で行うことはできません。より複雑な解析が必要になります。 –