• ベストアンサー

正規表現 半角数字1から100

.Net Framework のRegex.Replace で、半角数字1から100の範囲を正規表現で指定する方法を教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.4

"<aaa([1-9]>|[1-9][0-9]>|100>)" で置換したらどうですか?

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

補足していただいてなんなんですが、質問者さんが実際に 想定している入力と置換後の例を挙げてもらえますか? なにか長めの文字列の中にある<aaa42>というようなものを 消したいとか言うことではなくて、本当に<aaa99>のような 入力なんですか? 前後の文字列を含めてを消したいとありますが、境界となる条件がわかりません。 <から始まって、何文字か数字以外のモノがきて、それに続いて何桁かの数字、そして>ということでしょうか? あと、今回の条件なら数字の部分を数値化する手間をかけなくても 可能ですが、変わる可能性はあるんですか?

gokuririn
質問者

補足

>補足していただいてなんなんですが、質問者さんが実際に >想定している入力と置換後の例を挙げてもらえますか? 具体例を挙げますと、以下になります。 "<aaa-1>あああ" → "<aaa-1>あああ" "<aaa0>あああ" → "<aaa0>あああ" "<aaa1>あああ" → "あああ" "あ<aaa1>ああ" → "あああ" "あああ<aaa100>" → "あああ" "あああ<aaa101>" → "あああ<aaa101>" <aaa*> : *は半角数字文字列、*以外の<~>は決まっている文字列 *の部分が、1~100の範囲内であれば削除、範囲外であれば残すということをやりたいのです。 説明が足りませんで、申し訳ありません。 よろしくお願いします。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

数字ではなく、数値のようですね。"100"は対象で、"1000"や"-100"は 対象でないとなると、文字列扱いの正規表現では難しいのでは? 数値表現としてのマッチングを調べ、数値が1~100の場合にのみ 該当部分を除去するようにプログラムしては如何でしょう。

gokuririn
質問者

お礼

正規表現でやりたかったのです。 ありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

どんなデータが入力であって、その中の 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

gokuririn
質問者

補足

回答、ありがとうございます。 情報不足で大変失礼しました。 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, "")); 前後の文字列を含めると、うまくいきません。 よろしくお願いします。

関連するQ&A