C#で正規表現を使いパターンと一致した文字のインデックス位置を調べる

例えば、半角全角問わず最初に出てきた数字のインデックス位置を調べる場合。「\d」を使って半角と全角の「0〜9」に一致した位置を調べてみます。

\dは、「文字クラス」と呼ばれる文字のセットを表す表現で、0〜9の数字と一致するかを調べられます。 詳細はイカなどをご参照ください。

正規表現言語 - クイック リファレンス | Microsoft Docs

var wordList = new List<string>()
{
    "あいうえお1234",
    "あい上尾123+",
    "あいう",
    "あひゃ-",
    "ああAB",
};

// 半角全角問わず数字(0~9)
string pattern = @"\d";

foreach (var w in wordList)
{
    System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(w, pattern);

    // 1つめだけわかればいいとき
    if (mc.Count > 0)
    {
        // 一致がある場合、最初に一致した位置を取得する
        int firstIndex = mc[0].Index;
    }

    // foreachで回せば全部調べられる
    foreach (System.Text.RegularExpressions.Match m in mc)
    {
        int index = m.Index;
    }
}