• 締切済み

正規表現について(C#)

括弧に囲まれたデータについて処理を行いたいのですが、 @"<[0-9A-F]*?>|\(.*?\)" とした場合に "(\(1\))" が "(\(1\)" と返ります。 "(\(1\))" が "(\(1\))" と返すにはどのように変更すればよいでしょうか? また、括弧内に含まれる改行を除き(置き換え)たいのですが、どのように記述すればよいでしょうか? "(\n1\n)" を "(1)" と返してほしい。 お手数ですが教えてください。

みんなの回答

  • DoubtOwl
  • ベストアンサー率50% (63/124)
回答No.2

.*? により最短マッチになっています。 @"<[0-9A-F]*?>|\(.*\)" でどうでしょう。 >また、括弧内に含まれる改行を除き(置き換え)たいのですが、どのように記述すればよいでしょうか? Replaceではできませんか? "(\n1\n)".Replcace("\n", "");

参考URL:
http://dobon.net/vb/dotnet/string/regex.html
what326
質問者

お礼

ありがとうございます。 所望の動きができました。 が、"(\(1\))(\(2\))" のときに、"\(1\)\(2\)" とするのはまた違うのでしょうか? また、括弧内に含まれる改行を除くのも "(\n1\n)\n(\n2\n)" のときに、"(1)\n(2)" としたいです。 質問の仕方が悪くて大変申し訳ありません。

  • honor
  • ベストアンサー率35% (25/71)
回答No.1

参考URLの内容をちょこっと変えて string pattern = @"^[^\(\)]*(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$"; こんなので出来ないでしょうか。

参考URL:
http://msdn.microsoft.com/ja-jp/library/bs2twtah(v=vs.110).aspx
what326
質問者

お礼

ご回答ありがとうございます。 ですが所望の動作はしませんでした・・・。

関連するQ&A

専門家に質問してみよう