Open1

Swift: Regexの書き方でいつも迷うのでメモ

kabeyakabeya

Swiftでの正規表現です。
正規表現自体は良いのですが、マッチさせた後の書き方をいつも迷うのでメモ。

Perlで言うと以下のような奴です。

if ($text =~ /^([^:]+):/) {
  print "match: $1\n";
}

これをSwiftでどう書くのか(マッチの取り方)、毎回忘れます。

if let match = text.firstMatch(of: /^([^:]+):/) {
   print("match: \(match.1)")
}

こんな感じですね。
match.0がマッチ全体(/〜/のマッチ分。この例では:まで含む分。Perlだと$&)を表し、match.1, match.2 ...が()のマッチを表します。
ただ、match.0とかmatch.1の型はStringではなくてSubstringなんですよね。
Stringにするなら、String(match.1)とする必要があります。
ちょっと面倒。