マッチ演算子(m//)のx修飾子について(IPアドレス正規表現)
IPアドレスの正規表現を探していて、マッチ演算子(m{})のx修飾子のことを知りました。
マッチ演算子のx修飾子とは、パターンの中の空白文字やコメントを無視することができます。
ちなみに、空白文字とは、半角スペース、タブ、改行文字の総称です。
use strict; use warnings; my $IPAddress = "172.11.11.255"; if ($IPAddress =~ m{ ^ ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) # コメント1 \. ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) # コメント2 \. ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) # コメント3 \. ( \d | [01]?\d\d | 2[0-4]\d | 25[0-5] ) # コメント4 $ }x) { print "IPアドレスです!\n"; } else { print "IPアドレスでないです!\n"; }
上記は、パターンの中に半角スペース、改行文字とコメントが含まれていますが、それらはx修飾子を使用することでパターンの要素としては無視されます。
ちなみに、上記の正規表現は、IPアドレス正規表現です。
x修飾子を使わないで記述すると以下の感じです。
use strict; use warnings; my $IPAddress = "172.11.11.255"; if ($IPAddress =~ /^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$/) { print "IPアドレスです!\n"; } else { print "IPアドレスでないです!\n"; }
尚、本コンテンツは、以下のページを大変参考にさせて頂きました。