&tag(CSharp/正規表現);
| メソッド名 | 目的 | 戻り値 |
| IsMatch | 正規表現と一致するかどうかを判定。 | bool |
| Match | 最初のマッチだけ取得。 | Match |
| Matches | 全てのマッチを取得。 | MatchCollection |
| Split | 正規表現で文字列を分割 | stringの配列 |
| Replace | マッチする箇所を置換 | string |
| サンプル | 意味 |
| [a-z0-9] | aからzと0から9にマッチ。 |
| . | 任意の1文字。 |
| * | 直前の文字の0文字異常の繰り返し。 |
| (a+) | aの繰り返しをグループとしてキャプチャ。 |
| ^ | 文字列の先頭にマッチ。 |
| $ | 文字列の末尾にマッチ。 |
| \s | 空白にマッチ。 |
| \S | 空白以外にマッチ。 |
| \d | 数字にマッチ。 |
| \w | 単語に使われる文字にマッチ。 |
string str = "Hello world!";
Regex reg = new Regex(@"world");
if (reg.IsMatch(str))
{
Debug.WriteLine("Match");
}
else
{
Debug.WriteLine("Not Match");
}
Match
string str = "Hello woooooorld!";
Regex reg = new Regex(@"w(o+)rld");
Match m = reg.Match(str);
if (m.Success)
{
Debug.WriteLine("Match");
Debug.WriteLine("Groups[0]=" + m.Groups[0].Value);
Debug.WriteLine("Groups[1]=" + m.Groups[1].Value);
}
else
{
Debug.WriteLine("Not Match");
}
Match Groups[0]=woooooorld Groups[1]=oooooo
string str = "abccdefcccxyzcc";
Regex reg = new Regex(@"c+");
string result = reg.Replace(str, "C");
Debug.WriteLine(result);
abCdefCxyzC
private void ReplaceMatchEvaluator_Clicked(object sender, RoutedEventArgs e)
{
string str = "abccdefcccxyzcc";
Regex reg = new Regex(@"c+");
string result = reg.Replace(str, MyReplace);
Debug.WriteLine(result);
foreach (string beforeString in beforeStrings)
{
Debug.WriteLine(beforeString);
}
}
private int i = 0;
private List<string> beforeStrings = new List<string>();
private string MyReplace(Match m)
{
i++;
beforeStrings.Add(m.Groups[0].Value);
return i.ToString();
}
ab1def2xyz3 cc ccc cc