1

私は正規表現が初めてです。少し問題があり、答えが見つかりません。この正規表現を使用して冗長ブラケットを探しています:

public Regex RedundantBrackets = new Regex("[(](\\s?)[a-z](\\s?)[)]");

何かを見つけたら、この方法で文字列を変更したい:

text1 (text2) text3 => text1 text2 text3 -ご覧のとおり、ブラケットのみを削除したいのです。これどうやってするの?私は Replace メソッドを使用しようとしていましたが、それを使用すると、 のすべての記号しか置換できません"(text2)"

前もって感謝します!

4

3 に答える 3

1

この置換を試してください

Regex.Replace("text1 (text2) text3", // Input
              @"([()])",             // Pattern to match
              string.Empty)          // Item to replace

/* result: text1 text2 text3*/

説明

正規表現の置換では、一致する文字列全体が検索されます。一致するものが見つかった場合、そのアイテムが置き換えられます。したがって、一致パターンは次のようになります([()])。つまり、これは

  1. (一致を開始するためにパターン内で必要なものであり、終了が必要)です。そうでない場合、一致パターンのバランスが取れていません。
  2. []パターンでは、私はキャラクターを探していて、セット[]定義しています。それらはセットマッチと見なされます。最も一般的なのは [AZ] で、これは A で始まり Z で終わる任意の文字セットです。独自のセットを定義します。* [ と ] は1文字を探している正規表現を意味しますが、その中の多くの文字のセットを指定します。
  3. (また、指定できる)セット内には、2 つの文字のセットがあることも意味します。これらの 2 つの文字は、開き括弧と閉じ括弧です。[()] [)(]()

つまり、(1) セット内の (2) ( または ) の任意の文字に一致することを確認します。その一致が見つかったら、( または ) を string.empty に置き換えます。

テキストに対して regex replace を実行すると、2 つの一致する(text2 が見つかり、最後に一致する text2が見つかります)。これらは string.empty に置き換えられます。

于 2013-10-25T20:44:23.880 に答える