10

複雑な正規表現を見るたびに、私の目は涙を流し始めます。正規表現でさまざまな種類のシンボルにさまざまな色を与えるための既存のソリューションはありますか?

理想的には、リテラル文字、エスケープ シーケンス、クラス コード、アンカー、修飾子、先読みなどに対して異なる強調表示が必要です。言語によって構文が若干異なることは明らかですが、それは後で対処する問題です。

これが、正規表現を使用している言語に関係なく、Vim が行う構文の強調表示と何らかの形で共存できる場合のボーナスポイントです。

これはどこかに存在しますか、それとも私が作成する必要がありますか?

4

3 に答える 3

6

正規表現は構文が強調表示されていない可能性がありますが、他の方法で読みやすくすることを検討できます。

一部の言語では、正規表現を複数行に分割できます (perl、C#、Javascript)。これを行うと、通常の目に読みやすいようにフォーマットできます。 これが私の言いたいことの例です

一部の言語では、ここで説明する高度な (?x) 構文を使用することもできます。次に例を示します。

(?x:          # Find word-looking things without vowels, if they contain an "s"
   \b                       # word boundary
   [^b-df-hj-np-tv-z]*      # nonvowels only (zero or more)
   s                        # there must be an "s"
   [^b-df-hj-np-tv-z]*      # nonvowels only (zero or more)
   \b                       # word boundary
)

編集

Alが指摘したように、他のすべてが失敗した場合は、文字列連結を使用することもできます。次に例を示します。

regex = ""          # Find word-looking things without vowels, if they contain an "s"
   + "\b"                       # word boundary
   + "[^b-df-hj-np-tv-z]*"      # nonvowels only (zero or more)
   + "s"                        # there must be an "s"
   + "[^b-df-hj-np-tv-z]*"      # nonvowels only (zero or more)
   + "\b";                      # word boundary
于 2010-06-21T23:59:43.527 に答える
3

この Vim プラグインは、構文の強調表示を行うと主張しています。

http://www.vim.org/scripts/script.php?script_id=1091

私はそれがまさにあなたが望むものだとは思いませんが、あなた自身の使用に適応できると思います.

于 2010-06-21T22:47:37.960 に答える
2

Vim には、perl 正規表現の構文強調表示機能が既に備わっています。perl自体を知らなくても、正規表現をperlで書くことができます(新しいバッファを開き、ファイルタイプをに設定してperl「 」を挿入/regex/します)。正規表現は、PHP、Javascript、Pythonなどの他の多くの言語で機能します。彼らは PCRE ライブラリを使用したり、Perl の構文をコピーしたりしました。

vimscript ファイルに次のコード行を挿入すると、正規表現の構文が強調表示されます。

let testvar =~ "\(foo\|bar\)"

動作するまで、正規表現を二重引用符で囲んでいじることができます。

一部の言語では、正規表現が引用符で囲まれた文字列内に記述されるため、正規表現の構文強調表示を記述することは非常に困難です (構文の一部である Perl や Javascript とは異なります)。参考までに、このPHP の構文スクリプトは、二重引用符と単一引用符で囲まれた文字列内の正規表現を強調表示しますが、正規表現だけを強調表示するコードは、ほとんどの言語の構文スクリプト全体よりも長くなります。

于 2010-06-22T01:16:26.367 に答える