HOME » Natsu note » iOS » [紹介][チュートリアル] NSRegularExpression(正規表現)

[紹介][チュートリアル] NSRegularExpression(正規表現) 2013/06/04/|iOS

NSRegularExpressionのチュートリアルがあったのでやってみました。NSRegularExpressionとは、Objective-Cで正規表現を用いて文字列検索等を行うためのクラスです(iOS 4からあります)。iOS 6からはUITextFieldのコンテンツをNSAttributedStringで表現することができるようになりましたが、文章内の特定の文字列をハイライトしたいときなどにはNSRegularExpressionと合わせて利用すると便利です(チュートリアルでもそのような使い方をしています)。

正規表現についての知識がなくても取り組めるよう、簡単ではありますが、冒頭に正規表現とは何かの解説があります。

NSRegularExpression Tutorial and Cheat Sheet

http://www.raywenderlich.com/30288/nsregularexpression-tutorial-and-cheat-sheet

以下、簡単ではありますが、チュートリアルの流れをまとめます。

検索と置換

チュートリアルは、サンプルプロジェクトをダウンロードするところから始まります。NSRegularExpressionを使ったいくつかの処理を試せるよう、あらかじめスタート地点のプロジェクトが用意されているのです。親切ですね。

最初は検索と置換です。検索ワードを入力すると、UITextFieldに設定されている文章から該当する文字を検索しハイライトします。また、置換を有効にしている場合は、その場で置き換えを行います。

入力ワードをもとに検索や置換を行うため、正規表現としては大文字小文字のチェック程度なので特に難しいことはありません。ここでは、正規表現の文法というよりも、NSRegularExpressionの扱い方を理解することがメインになっています。

入力チェック

次は、入力を促すようなアプリでよく必要となるvalidation(有効性のチェック)。例えば、電話番号の欄に数字以外の文字がきていないか等のチェックを行います。個人的には、UXの観点からして入力チェックは非常に重要だと思っています。もちろん、キーボードの種類をある程度限定することで大きなミスは防げますが、きちんとしたチェックをすることで、よりストレスなくアプリを使いこなせることになるでしょう。

入力ルールに合わせ、正規表現を用いてチェックを行います。ここからは、正規表現の文法も少しずつ難しくなっていきます。

チュートリアル自体は、元々用意されているサンプルプロジェクトの一部にコードを追加していくことで進んでいきますが、入力チェックのロジックなど、このサンプルプロジェクト自体参考になる部分も多いでしょう。

複数検索結果のハイライト

最後は同時に複数の検索結果をハイライトします。ここでは検索ワードを使うのではなく、日付、時間、地域などよく利用されそうな内容を正規表現を用いて表現します。特定のルールに則っているかをチェックする、これぞ正規表現の醍醐味ですね。

このチュートリアルだけで、NSRegularExpressionや正規表現を使いこなせるようになるかというと、正直ちょっと難しいとは思います(とくに正規表現のパターンが)。ただ、パターンについては便利なチートシートがついていますので(これがものすごく便利)、そちらを参照しながら書けるようになれば問題ないでしょう。

NSRegularExpressionの使い方に関しては、初めてでもかなり理解できました。iOS 6でNSAttributedStringが使える範囲も広がってきていますし、同時にNSRegularExpressionの使い方も理解しておくと今後の実装の幅が広がると思います。

元々のサンプルプロジェクトが用意されているため、長いようでそれほど時間はかかりません。隙間時間に少しずつ試してみてはいかがでしょうか。

参考資料

NSRegularExpression Class Reference
クラスリファレンスの冒頭にも丁寧な解説があります。また、特殊文字等の一覧があり便利です。