トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
9-11 OO4O仕様で整数部が0の小数の整数部の0を削除
正規表現パズル
OO4Oの数値の文字列化する処理において、
整数部が0の小数の整数部の0を削除する処理を正規表現で実装する。
それにあたって、上記の削除対象の前ゼロを検索する。
検索前
検索後
対象データ
-0.5
+0.5
0.5
10.5
15.5
+10.5
+15.5
-10.5
-15.5
正規表現
可変長戻り読みを使わない場合
((?<=^)|(?<=^-)|(?<=^\+))0+(?=\.)
可変長戻り読みを使う場合
(?<=^[-+]?)0+(?=\.)
ソース
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string[] strArr = {"-0.5",
"+0.5",
"0.5",
"10.5",
"15.5",
"+10.5",
"+15.5",
"-10.5",
"-15.5"};
//const string Pattern = @"((?<=^)|(?<=^-)|(?<=^\+))0+(?=\.)";
const string Pattern = @"(?<=^[-+]?)0+(?=\.)";
System.Console.WriteLine("Pattern {0}", Pattern);
foreach (string each in strArr) {
string WillOut = each;
if (Regex.IsMatch(each, Pattern)) {
WillOut += " matchs ";
WillOut += Regex.Match(each, Pattern).Value;
}
else {
WillOut += " no match";
}
System.Console.WriteLine(WillOut);
}
}
}
実行結果
Pattern (?<=^[-+]?)0+(?=\.)
-0.5 matchs 0
+0.5 matchs 0
0.5 matchs 0
10.5 no match
15.5 no match
+10.5 no match
+15.5 no match
-10.5 no match
-15.5 no match
解説
.NETで使える、可変長戻り読みは便利ですね。