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


OKWaveコミュニティー
新規ユーザー登録(無料)今すぐ登録しよう!!
はじめての方へ OKWaveではこんなことができます!
特集
特集一覧
話題のQ&A「地震」編
話題のQ&A「地震」編
今、OKWaveで話題のキーワード「地震」についてのQ&Aを特集!みんなが大注目のQ&Aをチェック!
浴衣で恋するヘアスタイル特集
浴衣で恋するヘアスタイル特集
花火大会や夏祭りなど楽しいイベントに欠かせないのが浴衣。でもどんなヘアスタイルにしたらいいの?
夏にヒンヤリ 怖い話特集
夏にヒンヤリ 怖い話特集
「心霊体験」「怪奇現象」「肝試し」OKWaveの怖い話特集で夏をヒンヤリ楽しくすごしてください。
その他の特集はこちらからご覧下さい
おすすめリンク

質問

質問者:gokuririn 正規表現 半角数字1から100
困り度:
  • すぐに回答を!
.Net Framework のRegex.Replace で、半角数字1から100の範囲を正規表現で指定する方法を教えてください。

よろしくお願いします。
質問投稿日時:09/07/27 17:51
質問番号:5159952
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:sh_hirose "<aaa([1-9]>|[1-9][0-9]>|100>)"
で置換したらどうですか?
種類:回答
どんな人:専門家
自信:自信あり
回答日時:09/07/28 12:43
回答番号:No.4
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

良回答10pt

回答者:sakusaker7 補足していただいてなんなんですが、質問者さんが実際に
想定している入力と置換後の例を挙げてもらえますか?

なにか長めの文字列の中にある<aaa42>というようなものを
消したいとか言うことではなくて、本当に<aaa99>のような
入力なんですか?

前後の文字列を含めてを消したいとありますが、境界となる条件がわかりません。
<から始まって、何文字か数字以外のモノがきて、それに続いて何桁かの数字、そして>ということでしょうか?

あと、今回の条件なら数字の部分を数値化する手間をかけなくても
可能ですが、変わる可能性はあるんですか?
種類:補足要求
どんな人:経験者
自信:参考意見
回答日時:09/07/28 11:00
回答番号:No.3
この回答への補足>補足していただいてなんなんですが、質問者さんが実際に
>想定している入力と置換後の例を挙げてもらえますか?

具体例を挙げますと、以下になります。

"<aaa-1>あああ" → "<aaa-1>あああ"
"<aaa0>あああ" → "<aaa0>あああ"
"<aaa1>あああ" → "あああ"
"あ<aaa1>ああ" → "あああ"
"あああ<aaa100>" → "あああ"
"あああ<aaa101>" → "あああ<aaa101>"

<aaa*> : *は半角数字文字列、*以外の<〜>は決まっている文字列
*の部分が、1〜100の範囲内であれば削除、範囲外であれば残すということをやりたいのです。

説明が足りませんで、申し訳ありません。

よろしくお願いします。
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:nda23 数字ではなく、数値のようですね。"100"は対象で、"1000"や"-100"は
対象でないとなると、文字列扱いの正規表現では難しいのでは?
数値表現としてのマッチングを調べ、数値が1〜100の場合にのみ
該当部分を除去するようにプログラムしては如何でしょう。
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:09/07/28 10:03
回答番号:No.2
この回答へのお礼正規表現でやりたかったのです。

ありがとうございました。

回答

 

回答者:sakusaker7 どんなデータが入力であって、その中の 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
種類:回答
どんな人:経験者
自信:参考意見
回答日時:09/07/28 03:17
回答番号:No.1
この回答への補足回答、ありがとうございます。
情報不足で大変失礼しました。

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, ""));

前後の文字列を含めると、うまくいきません。

よろしくお願いします。
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示良回答のみ表示