前提・実現したいこと
WPFのアプリケーション開発で入力された文字列がある指定の形式に合っているか
正規表現を用いて確認したい。
発生している問題・エラーメッセージ
2パターンの形式のうちどちらかに合っていればOK、それ以外であればNGと判定して
その後の処理をしたいのですが、正規表現の評価順が分からなかったため、どの様な順番で
評価されているのか教えていただきたいです。
該当のソースコード
C#
1// 検索対象文字列(テキストボックスなど外部から入力) 2var target = "KA123456"; 3// 正規表現パターン 4var regexA = new Regex(@"(A\d{6}|KA\d{6})"); 5// パターンマッチ 6var matchA = regexA.Match(target); 7if (matchA.Success == true) 8{ 9 // パターンに合っている時の処理 10}
試したこと
上記コードの様に検索したい文字列が正規表現のどちらにも該当する場合には、
どちらをMatchで拾うのでしょうか。ネットで調べてみたところ、左側から評価されると
書いていたのをみたので試しに|(OR)の記号の前後を入れ替えても結果は
変わらず、A\d{6}にマッチしていました。
どちらのパターンにマッチしているかでその後の処理を変えたい場合には
下記の様に一回ずつマッチをして確認するしかないのでしょうか。
説明が下手で分かりにくいかもしれませんがご回答よろしくお願いします。
C#
1// 検索対象文字列(テキストボックスなど外部から入力) 2var target = "KA123456"; 3// 正規表現パターン 4var regexA = new Regex(@"A\d{6}"); 5var regexB = new Regex(@"KA\d{6}"); 6// パターンマッチ 7var matchA = regexA.Match(target); 8var matchB = regexB.Match(target); 9// KAから始まる数字6桁の場合にはどちらのパターンにもマッチするため、ifの入れ子で判定 10if (matchA.Success == true) 11{ 12 if (matchB.Success == true) 13 { 14 // パターンBに合っている時の処理 15 } 16 else 17 { 18 // パターンAに合っている時の処理 19 } 20}
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017
.NET Framework 4.6.1
手元の環境だと KA\d{6} の方にマッチするようなのですがどうやって確認されましたか?
ご回答ありがとうございます。
すみません。おっしゃる通りKAの間違いです。
回答2件
あなたの回答
tips
プレビュー