1

要求に応じて、私は再び質問を定式化しました。

括弧内のすべての単語の非タイトルケースをタイトルケースに変更したい{}

括弧内のすべての単語を一致させたいが[^}]、正規表現のどこに配置すればよいかわかりません。

これは私の検索正規表現ですが、括弧内の単一の単語を選択するのではなく、括弧内のテキスト全体を選択します

/{\s*\zs\(\(\<\w[^}]\+\>\ze\)\s*\)\+}

私の正規表現で何が問題になっていますか?

正規表現が括弧内のタイトル以外の大文字と小文字の単語のみに一致する場合はさらに優れていますが、これによりさらに複雑になります。

4

2 に答える 2

2

\zs角かっこ内の単一の単語に一致させるには、 /を使用してはなりません\ze。新しい一致は、前の一致の終了後にのみ開始される可能性があり、\zs/\zeは一致の開始/終了を計算するときに考慮されないためです (これらは、一致したテキストを計算する場合にのみ考慮されます)。とカーソルを置く位置)。代わりに先読みと後読みを使用する必要がありました。

\%({[^}]*\)\@<=\<\l[^ }]\{-}\>\%([^}]*}\)\@=

. しかし、タイトル以外のケースをタイトルケースに変更するには、はるかに簡単なアプローチがあります。中括弧内のすべての単語に一致する正規表現を構築しようとするのではなく、中括弧の内容全体に個別に一致し、ネストされた置換を使用します。

:s/{\zs.\{-}\ze}/\=substitute(submatch(0), '\<\l', '\U\0', 'g')/g

.

于 2013-08-07T16:33:47.847 に答える