トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
9-9 条件分岐(if then else)で括弧のキャプチャ有無を使用
正規表現パズル
ソース
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string[] strArr = {"AB",
"A-B-",
"A-B",
"AB-"};
//位置指定のキャプチャを使用
const string Pattern = @"^[A-Z](-)?[A-Z](?(1)-)$";
//名前指定のキャプチャを使用
//const string Pattern = @"^[A-Z](?<Cap1>-)?[A-Z](?(Cap1)-)";
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 ^[A-Z](-)?[A-Z](?(1)-)$
AB matchs AB
A-B- matchs A-B-
A-B no match
AB- no match
実行結果(名前指定のキャプチャを使用)
Pattern ^[A-Z](?<Cap1>-)?[A-Z](?(Cap1)-)
AB matchs AB
A-B- matchs A-B-
A-B no match
AB- matchs AB