Swift正規表現入門!Regex BuilderとNSRegularExpressionを初心者向けに解説
生徒
「Swiftで文字列の中から特定のパターンを探したいんですけど、どうすればいいですか?」
先生
「それには正規表現(せいきひょうげん)という便利な方法を使います。SwiftにはRegex BuilderやNSRegularExpressionといった仕組みがあり、文字列の中からメールアドレスや電話番号など特定の形を見つけることができます。」
生徒
「なんだか難しそうですね…。プログラミング初心者でも使えるんですか?」
先生
「大丈夫です。身近な例を交えながら、わかりやすく説明していきますよ!」
1. 正規表現とは?
正規表現(せいきひょうげん)とは、「文字の並び方=パターン」を条件として指定し、文字列の中から当てはまる部分を見つけ出すための仕組みです。単純に「この文字が含まれているか」を調べるだけでなく、「数字が続いている部分」や「@が入った文字列」など、人が感覚的に判断しているルールをプログラムで表現できます。
たとえば、申込フォームで「数字だけが入力されているか」を確認したり、文章の中から「電話番号らしき文字」を探したりする場面でよく使われます。文字を一つずつ確認する必要がなく、条件に合う部分をまとめてチェックできるのが大きな特徴です。
イメージとしては、郵便物を仕分けする際の「決まりごと」に近いです。「数字が書いてあるものだけ」「@マークが入っているものだけ」といったルールを先に決めておくことで、あとは自動的に振り分けられます。
まずは「正規表現=文字のルールを決めて探す道具」と覚えておくと、後の理解がぐっと楽になります。
とても簡単な例として、「文字列の中に数字が含まれているか」を正規表現で調べてみましょう。
import Foundation
let text = "注文番号は123です"
let pattern = "\\d+" // 数字が1回以上続く、という意味
let regex = try! NSRegularExpression(pattern: pattern)
let result = regex.firstMatch(in: text, range: NSRange(text.startIndex..., in: text))
if result != nil {
print("数字が含まれています")
}
このサンプルでは、「\\d+」というルールを使って数字を探しています。細かい記号の意味は今は理解できなくても問題ありません。「こう書くと数字を探せるんだな」という感覚をつかめれば十分です。
2. SwiftのRegex Builderを使う
Swift 5.7からは、正規表現をより安全で読みやすく書けるRegex Builderが使えるようになりました。これまでの正規表現は、記号が多く「何をしているのか分からない」と感じる初心者の方も多かったと思いますが、Regex Builderなら英語の文章のように組み立てて書けるのが大きな特徴です。
まずは、プログラミング未経験の方でも理解しやすい、とてもシンプルな例を見てみましょう。ここでは「文字列の中から数字が続いている部分を見つける」処理を行います。
import RegexBuilder
let numberRegex = Regex {
OneOrMore(.digit)
}
let message = "注文番号は98765です"
if let result = message.firstMatch(of: numberRegex) {
print(result.0)
}
このプログラムでは、まずRegexBuilderを読み込み、Regexの中で条件を定義しています。OneOrMore(.digit)は「数字(digit)が1文字以上続く」という意味です。難しい記号を覚えなくても、何を探しているのかがコードから直感的に分かります。
実行すると、文章の中に含まれる数字のかたまりが見つかり、次のように表示されます。
98765
このように、Regex Builderを使えば「数字を探す」「特定の文字の並びを見つける」といった処理を、安全かつ読みやすい形で実装できます。正規表現が初めての方でも、Swiftのコードとして自然に理解できる点が大きなメリットです。
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の違い
ここまで紹介した2つの方法には次のような違いがあります。
- Regex Builder: Swift専用の新しい書き方。読みやすく初心者にも理解しやすい。
- NSRegularExpression: 古くからある方法。複雑なパターンも自由に書けるが、記号が多くて難しく感じやすい。
初心者の方はまずRegex Builderを使い、既存のコードや他のエンジニアが書いたサンプルを見るときにNSRegularExpressionも覚えるとよいでしょう。
5. 実生活にたとえて理解しよう
正規表現は一見難しそうですが、身近な例に置き換えると理解しやすいです。例えばスーパーで「値札に100円と書かれている商品だけを選びたい」というとき、数字の部分だけを見つけて判断します。これが「数字を探す正規表現」です。また、「@マークが入っている文字列だけを探す」のは「メールアドレスを見つける正規表現」です。
つまり、正規表現は大量の文字の中から「必要なものだけをフィルターにかける仕組み」だと考えるとイメージしやすいでしょう。
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
まとめ
Swift 正規表現入門では、正規表現入門をSwiftで扱うときの考え方を確認しました。Swift文字列処理は、書き方だけを覚えるよりも、Xcodeで動かしながら「どこで値が変わるのか」「失敗したときに何が起きるのか」を見たほうが理解しやすくなります。
仕上げの練習
- 正規表現入門で注目する場所として、文字数とバイト数の違い、日本語や絵文字を含む文字列、Data変換の失敗を説明できる
- 日本語、英数字、空文字を入力して、countやUTF-8変換の結果を比べる
- Xcodeのエラー、警告、コンソール出力を読み、原因を1つ言葉にできる
- Swift、Xcode、iOSアプリ開発の中で、この記事の知識を使う場面を想像できる
復習するときは、次のような短いコードを自分の環境で動かしてみましょう。記事のテーマに合わせて値や条件を変えると、Swiftの型安全、Optional、エラー処理、画面更新の見え方が少しずつ整理できます。
let text = "カフェ"
print(text.count)
print(Array(text.utf8))
if let data = text.data(using: .utf8) {
print(data.count)
}
生徒
「正規表現入門は、どこを変えて試せばいいか分かると復習しやすいですね。」
先生
「はい。まずは小さく動かし、次に失敗するケースを1つ足してみましょう。Swiftは型やエラーがヒントを出してくれるので、結果を見ながら直す練習がそのまま実務力につながります。」
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門