正規表現 – Dart逆引きリファレンス

2012.05.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

正規表現(Regular expressions)

標準的な正規表現利用の流れは下記のようになります。

  1. RegExp」オブジェクトを生成する。
  2. RegExp」オブジェクトの持つマッチメソッドを利用して「Match」オブジェクトを取得する。
  3. Match」オブジェクトから合致した文字列を取得する。

正規表現で最初の合致文字列を調べたい

RegExp」オブジェクトが持つ「firstMatch」メソッドを利用します。

var email = 'test@example.com';
Match match = new RegExp(@'@').firstMatch(email);
print(match.group(0));
@

正規表現で全ての合致文字列を調べたい

RegExp」オブジェクトが持つ「allMatches」メソッドを利用します。

var invalidEmail = 'f@il@example.com';
Iterable<Match> matches = new RegExp(@'@').allMatches(invalidEmail);
for (Match m in matches) {
  print(m.group(0));
}
@
@

パターングループを利用して文字列を抽出したい

Match」オブジェクトが持つ任意のグループを参照します。

var email = 'test@example.com';
RegExp exp = new RegExp(@'^(.+)@(.+)$');
match = exp.firstMatch(email);
print(match.groupCount());
print(match.group(1));
print(match.group(2));
2
test
example.com

上述の例は以下のようにも記述できます。

var email = 'test@example.com';
RegExp exp = new RegExp(@'^(.+)@(.+)$');
match = exp.firstMatch(email);
print(match.groupCount());
List<String> groups = match.groups([1, 2]);
groups.forEach(print);