0

次の場合を除いて、すべて大文字で必要なテキスト(文字列)があります。

  1. :(コロン)で始まる単語
  2. 二重引用符で囲まれた単語または文字列、 ""
  3. 一重引用符で囲まれた単語または文字列''

それ以外はすべて大文字に置き換え、書式設定(空白、改行など)はそのままにしておく必要があります。

正規表現(C#スタイル/構文)を使用してこれを行うにはどうすればよいですか?

4

2 に答える 2

4

私はあなたがこのようなものを探していると思います:

text = Regex.Replace(text, @":\w+|""[^""]*""|'[^']*'|(.)",
                     match => match.Groups[1].Success ?
                              match.Groups[1].Value.ToUpper() : match.Value);
  • :\w+-単語をコロンと一致させます。
  • "[^"]*"|'[^']*'-引用されたテキストと一致します。エスケープされた引用符の場合、次を使用できます。

    "[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'
    
  • (.)-他のものをキャプチャします(試すこともできますが([^"':]*|.)、より高速になる可能性があります)。

次に、Regex.Replaceのコールバックを使用して、次の2つのことを行います。

  • テキストをそのままにする必要があるかどうかを判断するか、
  • テキストの大文字バージョンを返します。

実例: http: //ideone.com/ORFU8

于 2012-08-16T11:12:18.657 に答える
1

この正規表現から始めることができます:

\b(?<![:"'])(\w+?)(?!["'])\b

しかしもちろん、それが十分でない場合は、自分で改善する必要があります。たとえば、これでも「dfgdfg」(引用符が等しくない)は見つかりません。見つかった単語は最初の一致($ 1)にあります。

于 2012-08-16T11:13:52.023 に答える