カテゴリ: Swift 更新日: 2025/12/11

Swift正規表現入門!Regex BuilderとNSRegularExpressionを初心者向けに解説

Swift 正規表現入門|Regex BuilderとNSRegularExpression
Swift 正規表現入門|Regex BuilderとNSRegularExpression

先生と生徒の会話形式で理解しよう

生徒

「Swiftで文字列の中から特定のパターンを探したいんですけど、どうすればいいですか?」

先生

「それには正規表現(せいきひょうげん)という便利な方法を使います。SwiftにはRegex BuilderNSRegularExpressionといった仕組みがあり、文字列の中からメールアドレスや電話番号など特定の形を見つけることができます。」

生徒

「なんだか難しそうですね…。プログラミング初心者でも使えるんですか?」

先生

「大丈夫です。身近な例を交えながら、わかりやすく説明していきますよ!」

1. 正規表現とは?

1. 正規表現とは?
1. 正規表現とは?

正規表現とは「文字のパターンを表現する方法」です。例えば、「数字だけを探したい」「メールアドレスっぽい文字を見つけたい」といったときに使います。正規表現を使うと、単なる文字検索では難しい複雑な条件を一発で判定できます。

イメージとしては、郵便物を仕分けするときの「ルール表」のようなものです。「住所に東京都と書いてあればこの箱に入れる」といった感じで、文字列を自動でチェックできます。

2. SwiftのRegex Builderを使う

2. SwiftのRegex Builderを使う
2. SwiftのRegex Builderを使う

Swift 5.7からはRegex Builderという新しい書き方が追加されました。これを使うと、従来の難解な記号だらけの正規表現を、読みやすく組み立てられます。


import RegexBuilder

let pattern = Regex {
    OneOrMore(.digit)
}

let text = "電話番号は12345です"
if let match = text.firstMatch(of: pattern) {
    print(match.0)
}

このコードは、文字列の中から「数字が連続している部分」を探します。結果として「12345」が見つかります。


12345

OneOrMore(.digit)は「数字が1回以上」という意味です。直感的に書けるので初心者でもわかりやすいのが特徴です。

3. NSRegularExpressionを使う

3. NSRegularExpressionを使う
3. NSRegularExpressionを使う

NSRegularExpressionは昔からある正規表現の仕組みです。少し難しそうに見えますが、まだまだ現場ではよく使われています。


import Foundation

let text = "メールはsample@example.comです"
let pattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let regex = try! NSRegularExpression(pattern: pattern)
let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))

for match in matches {
    if let range = Range(match.range, in: text) {
        print(text[range])
    }
}

この例では「メールアドレスっぽい文字列」を探しています。実行すると「sample@example.com」が抽出されます。


sample@example.com

正規表現のパターンは一見複雑ですが、「@の前後に英数字があって、最後にドットとアルファベットが続く」というルールを表しています。

4. Regex BuilderとNSRegularExpressionの違い

4. Regex BuilderとNSRegularExpressionの違い
4. Regex BuilderとNSRegularExpressionの違い

ここまで紹介した2つの方法には次のような違いがあります。

  • Regex Builder: Swift専用の新しい書き方。読みやすく初心者にも理解しやすい。
  • NSRegularExpression: 古くからある方法。複雑なパターンも自由に書けるが、記号が多くて難しく感じやすい。

初心者の方はまずRegex Builderを使い、既存のコードや他のエンジニアが書いたサンプルを見るときにNSRegularExpressionも覚えるとよいでしょう。

5. 実生活にたとえて理解しよう

5. 実生活にたとえて理解しよう
5. 実生活にたとえて理解しよう

正規表現は一見難しそうですが、身近な例に置き換えると理解しやすいです。例えばスーパーで「値札に100円と書かれている商品だけを選びたい」というとき、数字の部分だけを見つけて判断します。これが「数字を探す正規表現」です。また、「@マークが入っている文字列だけを探す」のは「メールアドレスを見つける正規表現」です。

つまり、正規表現は大量の文字の中から「必要なものだけをフィルターにかける仕組み」だと考えるとイメージしやすいでしょう。

6. まとめて実践コード

6. まとめて実践コード
6. まとめて実践コード

最後にRegex BuilderとNSRegularExpressionをまとめて比較できるサンプルコードを紹介します。


import Foundation
import RegexBuilder

let text = "ユーザーID: abc123, メール: test@example.com"

// Regex Builderで数字を抽出
let numberPattern = Regex { OneOrMore(.digit) }
if let match = text.firstMatch(of: numberPattern) {
    print("数字: \(match.0)")
}

// NSRegularExpressionでメールを抽出
let mailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let regex = try! NSRegularExpression(pattern: mailPattern)
let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
for match in matches {
    if let range = Range(match.range, in: text) {
        print("メール: \(text[range])")
    }
}

このコードでは「数字」と「メールアドレス」の両方を抽出できます。


数字: 123
メール: test@example.com
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
New2
Kotlin
Kotlinのコーディング規約(公式スタイルガイド)とは?読みやすいコードを書くための基本ルール
New3
Kotlin
Kotlinの関数型を整理するパッケージ・ファイル構造の例を初心者向けにやさしく解説!
New4
Swift
Swiftデータ型まとめ|String・Int・Bool・Arrayの基本を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Go言語
Go言語のWebアプリにおけるセキュリティベストプラクティス集
No.3
Java&Spring記事人気No3
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.7
Java&Spring記事人気No7
Swift
Swiftで0埋め・ゼロパディングを徹底解説!printf互換のformat活用法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのgetter・setterのカスタマイズ方法をわかりやすく解説!初心者向け完全ガイド