この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
正規表現(Regular expressions)
標準的な正規表現利用の流れは下記のようになります。
- 「RegExp」オブジェクトを生成する。
- 「RegExp」オブジェクトの持つマッチメソッドを利用して「Match」オブジェクトを取得する。
- 「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);