- 締切済み
正規表現について(C#)
括弧に囲まれたデータについて処理を行いたいのですが、 @"<[0-9A-F]*?>|\(.*?\)" とした場合に "(\(1\))" が "(\(1\)" と返ります。 "(\(1\))" が "(\(1\))" と返すにはどのように変更すればよいでしょうか? また、括弧内に含まれる改行を除き(置き換え)たいのですが、どのように記述すればよいでしょうか? "(\n1\n)" を "(1)" と返してほしい。 お手数ですが教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- DoubtOwl
- ベストアンサー率50% (63/124)
回答No.2
.*? により最短マッチになっています。 @"<[0-9A-F]*?>|\(.*\)" でどうでしょう。 >また、括弧内に含まれる改行を除き(置き換え)たいのですが、どのように記述すればよいでしょうか? Replaceではできませんか? "(\n1\n)".Replcace("\n", "");
- honor
- ベストアンサー率35% (25/71)
回答No.1
参考URLの内容をちょこっと変えて string pattern = @"^[^\(\)]*(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$"; こんなので出来ないでしょうか。
質問者
お礼
ご回答ありがとうございます。 ですが所望の動作はしませんでした・・・。
お礼
ありがとうございます。 所望の動きができました。 が、"(\(1\))(\(2\))" のときに、"\(1\)\(2\)" とするのはまた違うのでしょうか? また、括弧内に含まれる改行を除くのも "(\n1\n)\n(\n2\n)" のときに、"(1)\n(2)" としたいです。 質問の仕方が悪くて大変申し訳ありません。