正規表現まとめ Ruby
正規表現について まず、正規表現とはなんぞや?ということから
あいまいな文字列パターンを正しく認識するためのしくみです。
WEBの入力で、メールアドレスを入力したりしますね。 そのときにメールアドレス以外のものが入るとメールアドレスが違っています。 などと表示されますね。 それは、正規表現を利用して、プログラムが判断しているわけです。 では正規表現の作業のながれをまとめます。
1-正規表現の書式を決める
2-それがデータと一致するか?
部分一致か全文一致か
3-その時の処理
合致したときや、そうでないときの処理を書く。
正規表現の書き方は
このサイトが一番いい
developer.mozilla.org
例えばRubyで、ipアドレスが正しいか?だとこのように書く。
reg = Regexp.new("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
まずRegexp関数(レッグ)と呼んでいる。 でオブジェクト作ります。 その時
正規表現の始まりを表す ^ と終わりを表す $
がとても大切。
[0-9]は0〜9の文字列が入りますよということ。
次の{1,3}は最低1回は0-9の文字があります。最高は3回入りますよ。ということです。
{ }は何回繰り返すかを表現します。
[ ]は集合。 [0-9]なら 0から9までの数字
[a-z]はa~zまでのアルファベット
便利なのは [\w] アンダースコアを含む、どの英語、数字にもマッチします。
str = abc str =~ reg
これはabcは数字でないので当然 falseが返却されます。
Rubyは =~ の演算子で正規表現のパターンマッチを評価します。
マッチしたときはマッチした部分の位置を整数で返しますマッチしなかったらnilを返します。
swiftの場合
let pattern = "^[\\d]+$" guard let regex = try? NSRegularExpression(pattern: pattern) else { return false } let matches = regex.matches(in: self, range: NSRange(location: 0, length: length))
まずpatternを決めていますね。 それからguard文でnilのときにreturnで処理を抜けるようにしています。
NSRegularExpression関数を利用します。 正規表現を利用するクラスです。