- ベストアンサー
正規表現 半角数字1から100
.Net Framework のRegex.Replace で、半角数字1から100の範囲を正規表現で指定する方法を教えてください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
"<aaa([1-9]>|[1-9][0-9]>|100>)" で置換したらどうですか?
その他の回答 (3)
- sakusaker7
- ベストアンサー率62% (800/1280)
補足していただいてなんなんですが、質問者さんが実際に 想定している入力と置換後の例を挙げてもらえますか? なにか長めの文字列の中にある<aaa42>というようなものを 消したいとか言うことではなくて、本当に<aaa99>のような 入力なんですか? 前後の文字列を含めてを消したいとありますが、境界となる条件がわかりません。 <から始まって、何文字か数字以外のモノがきて、それに続いて何桁かの数字、そして>ということでしょうか? あと、今回の条件なら数字の部分を数値化する手間をかけなくても 可能ですが、変わる可能性はあるんですか?
- nda23
- ベストアンサー率54% (777/1415)
数字ではなく、数値のようですね。"100"は対象で、"1000"や"-100"は 対象でないとなると、文字列扱いの正規表現では難しいのでは? 数値表現としてのマッチングを調べ、数値が1~100の場合にのみ 該当部分を除去するようにプログラムしては如何でしょう。
お礼
正規表現でやりたかったのです。 ありがとうございました。
- sakusaker7
- ベストアンサー率62% (800/1280)
どんなデータが入力であって、その中の 1 ~ 100 をどう置換するのか というのがまるで書かれてないので適当に。 using System.Text.RegularExpressions; public class hoge { public static void Main() { string[] data = {"-1", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "99", "100", "101", "1000"}; Regex r = new Regex(@"^[1-9][0-9]?0?$"); foreach (string s in data) { System.Console.WriteLine(r.Replace(s, "XXXX")); } } } 実行例: -1 0 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 101 1000
補足
回答、ありがとうございます。 情報不足で大変失礼しました。 sakusaker7さんの例で表すと、 string[] data = {"<aaa-1>", "<aaa0>", "<aaa1>", "<aaa2>", "<aaa3>", "<aaa4>", "<aaa5>", "<aaa6>", "<aaa7>", "<aaa8>", "<aaa9>", "<aaa10>", "<aaa99>", "<aaa100>", "<aaa101>", "<aaa1000>"}; が入力で、 半角数字部分が1~100のものは前後の文字列を含めて削除したいのです。 なので、置換部分はこうしたいです。 System.Console.WriteLine(r.Replace(s, "")); 前後の文字列を含めると、うまくいきません。 よろしくお願いします。
補足
>補足していただいてなんなんですが、質問者さんが実際に >想定している入力と置換後の例を挙げてもらえますか? 具体例を挙げますと、以下になります。 "<aaa-1>あああ" → "<aaa-1>あああ" "<aaa0>あああ" → "<aaa0>あああ" "<aaa1>あああ" → "あああ" "あ<aaa1>ああ" → "あああ" "あああ<aaa100>" → "あああ" "あああ<aaa101>" → "あああ<aaa101>" <aaa*> : *は半角数字文字列、*以外の<~>は決まっている文字列 *の部分が、1~100の範囲内であれば削除、範囲外であれば残すということをやりたいのです。 説明が足りませんで、申し訳ありません。 よろしくお願いします。