vim正規表現構文では、アンダースコアで始まらず、大文字で始まるすべての単語と一致させようとしています。
\([A-Z][a-z_][A-Za-z_]\+\)
これは私が今まで持っているものです。
私はこのようなものが欲しい:
\([A-Z^_][a-z_][A-Za-z_]\+\)
どこで [A-Z^\_]
アンダースコアではなく、すべての大文字と一致する必要があることを示します。
どんな助けも大いに期待されます。前もって感謝します。
編集:私の質問は不十分に悩まされていました。最初のセットを大文字の文字と一致させたいのですが、その前にアンダースコアはありません。ごめんなさい。
回答:
回答№1は2[A-Z]
すでにしている ない アンダースコアを含める;マッチさせたいと思う 一言、「正規表現を一致させたくない」 内部 単語。 Vimには組み込みの <
そして >
( b
他の正規表現方言では、@ npintiの回答を参照してください キーワードの境界;通常、小文字/大文字およびアンダースコア文字はキーワード文字であるため、これらをパターンにラップすることはすでに十分に近いはずです。
<([A-Z][a-z_][A-Za-z_]+)>
一致する前にアンダースコアを厳密にアサートしないで(ただし、そこに他のキーワードまたは非キーワード文字を許可する)には、 負帰還: @<!
手段 の前にはありません:
_@<!([A-Z][a-z_][A-Za-z_]+)
回答№2の場合は0
[A-Z ^ _]は、アンダースコアではなく、すべて大文字の文字と一致する必要があることを示します。
[A-Z] 既に アンダースコアを除くすべての大文字と一致します。ただし、最初のソリューションでは、 二番目 文字は小文字またはアンダースコア([a-z_]
)。あなたの定義に固執する場合:
アンダースコアで始まらない、大文字で始まるすべての単語
その後、 [A-Z][A-Za-z_]+
うまくいくはずです。