正規表現を使って条件に一致する文字を抽出して
その結果を処理したい時にそのままだとLinqが使えなかったのでメモ。
任意の文字列から16進数として有効な文字を2文字ずつ取得したい場合のサンプル。
16進文字列を抽出
// 抽出結果を格納したい
var result = new List<string>();
// 16進数文字列を2文字ずつ取得
var matches = Regex.Matches("0123abcdXyx", "[0-9a-fA-F]{2}");
// MatchCollectionクラスはIEnumerableでIEnumerable<T>じゃないので
// そのままだとLinqが使えないのでIEnumerable<Match>にキャストしてから使う。
result.AddRange(matches.Cast<Match>().Select(m => m.Value));
// 結果は『01』『23』『ab』『cd』