2

次のように、RaTeX コードに構文の強調表示を追加するために、 Rainbow.jsライブラリを使用しています。

Rainbow.extend('latex', [
    {
        'name': 'comment',
        'pattern': /%.*$/gm
    },
    {
        'name': 'storage.function',
        'pattern': /\\[A-z@]+/g
    },
    {
        'matches':
        {
            1: 'entity.name.function',
            3: 'entity.class'
        },
        'pattern': /(\\(begin|end))\s*\{(.*?)\}/g
    }
], true)

#3しかし、他の方法で見ると、グループがキャプチャされているにもかかわらず、グループを強調表示することはできません。何がうまくいかないのでしょうか?最初のグループには一致するが、3 番目のグループには一致しないのはなぜですか?

4

1 に答える 1

0

あなたの問題は、2番目のブラケットをエスケープするのを忘れたため、/(\\(begin|end\\))\s*\{(.*?)\}/g.

(\\(begin|end\\))ただし、最初と 2 番目の2 つのグループしかありません(.*)。グループのコンテンツを取得する必要がない場合は、非キャプチャーにすることができます (ちなみに、パフォーマンスが向上します)非キャプチャーグループとは? を参照してください。疑問符の後にコロン (?:) が続くとはどういう意味ですか? .

範囲については、文字クラスを参照A-zのようには機能しません。大文字と小文字を区別しないことを意味するフラグで範囲を使用する必要があります。a-zA-Za-zi

于 2014-08-26T11:46:31.867 に答える