Regex.Splitメソッドを使うと、正規表現にマッチする箇所を探索し、マッチした部分を区切りとして文字列を分割することができます。 言い換えると、文字列分割の区切り文字として任意の正規表現を用いることができます。 Regex.SplitメソッドはString.Splitメソッドと同様、分割した結果を文字列型の配列で返します。
次の例では、句読点(\p{P}
)を区切りとみなして文字列を分割しています。
Regex.Splitメソッドを使って正規表現にマッチした箇所で文字列を分割する
using System;
using System.Text.RegularExpressions;
class Sample {
static void Main()
{
var text = "abc,def.ghi!あいう、アイウ。かな「漢字」カナ,123.123";
// 正規表現にマッチした箇所で文字列を分割する
var words = Regex.Split(text, @"\p{P}");
// 分割した文字列を列挙する
foreach (var word in words) {
Console.WriteLine(word);
}
}
}
実行結果
abc def ghi あいう アイウ かな 漢字 カナ 123 123
Regex.Splitメソッドでは、区切りの正規表現がグループ化されているか・キャプチャされるグループかどうかによって、区切りの文字列となる文字列も含めて返されるかどうかが変わります。 この動作について詳しくは正規表現の構造化および処理(マッチ・グループ・キャプチャ) §.グループ化された正規表現による分割 (Regex.Split)で解説しています。
この例で使用している正規表現\p{P}
のP
は、「すべての句読点」を表すUnicodeカテゴリを意味します。 このほかにも「全ての制御文字」を表すC
や、「全ての記号」を表すS
、「記号・数学」を表すSm
などを使うこともできます。 詳しくは.NET Frameworkで使用できる正規表現 §.文字クラス等を参照してください。