文法確認のサンプルプログラム
#正規表現文法確認
use strict;
use warnings;
use utf8;
binmode STDOUT, 'encoding(utf8)'; #Windows の場合は utf8 -> cp932
print '19720807 vs [0-8]{8} :';
'19720807' =~ m/[0-8]{8}/ and print "match\n" or print "not match\n";
print '19720807 vs [0-9]{8} :';
'19720807' =~ m/[0-9]{8}/ and print "match\n" or print "not match\n";
print '19720807 vs \d{8} :';
'19720807' =~ m/\d{8}/ and print "match\n" or print "not match\n";
print '19720807 vs \w{8} :';
'19720807' =~ m/\w{8}/ and print "match\n" or print "not match\n";
print '19720807 vs [a-z]{8} :';
'19720807' =~ m/[a-z]{8}/ and print "match\n" or print "not match\n";
print '1972 vs [0-9]{8} :';
'1972' =~ m/[0-9]{8}/ and print "match\n" or print "not match\n";
print '1972 vs [0-9]{1,8} :';
'1972' =~ m/[0-9]{1,8}/ and print "match\n" or print "not match\n";
print '(blank) vs [0-9]{0,8} :';
'' =~ m/[0-9]{0,8}/ and print "match\n" or print "not match\n";
print '(blank) vs [0-9]{0,} :';
'' =~ m/[0-9]{0,}/ and print "match\n" or print "not match\n";
print '(blank) vs [0-9]* :';
'' =~ m/[0-9]*/ and print "match\n" or print "not match\n";
print '(blank) vs [0-9]+ :';
'' =~ m/[0-9]+/ and print "match\n" or print "not match\n";
print '(blank) vs [0-9]? :';
'' =~ m/[0-9]?/ and print "match\n" or print "not match\n";
print '1972 vs [0-9]? :';
'1972' =~ m/[0-9]?/ and print "match\n" or print "not match\n";
疑問を感じた点は、プログラムを変更しながら結果がどうなるか確かめて下さい。なお、このプログラムのように、何か迷う事があれば簡単なプログラムを別に作って動作確認をすると結局は時間の節約になりますのでおすすめです。
次は>パターンが「マッチしない」事のチェック







