Perlの目次へ

正規表現

~/ / マッチング

slash01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml xml sgml xslt java javascript);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/ml/){     #mlを含んでいる言葉を捜す
      print"$b\n";
  }
}

.(ドット) 任意の1文字

dot01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml xml sgml xslt java javascript);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/x.l/){     #.は任意の1文字に対応
      print"$b\n";
  }
}

* 直前の1文字が0個以上

ast01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml xml sgml xslt java javascript);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/s*i/){     #*は直前の文字の0回以上の繰り返し
      print"$b\n";
  }
}

+ 直前の1文字が1個以上

plus01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml xml sgml xslt java javascript);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/s+i/){     #+は直前の文字の1回以上の繰り返し
      print"$b\n";
  }
}

? 直前の1文字が0か1個

hatena01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml xml sgml xslt java javascript);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/x?ml/){     #?は直前の文字が0回もしくは1回
      print"$b\n";
  }
}

[ ] どれかの文字

moji01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml xml sgml xslt java javascript);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/[abc]/){     #[]の文字のどれかが一致
      print"$b\n";
  }
}

[ - ] 文字の範囲

moji02.pl

#!/usr/bin/perl

@a=qw(10 256 304 20 150 440);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/[3-6][0-1]/){     #3から6までの後に0から1まで
      print"$b\n";
  }
}

304, 150, 440

^ 指定文字列を含まない

hat01.pl

#!/usr/bin/perl

@a=qw(10 256 304 20 150 440);

foreach $b (@a){    #@aの要素を順次$bに代入
  
  if($b=~/[^3-6][0-1]/){     #^は含まない文字の指定
      print"$b\n";
  }
}

文字クラスの略記法

文字クラスの略記法
略記法等価な記述略記法等価な記述
\d[0-9]\D[^0-9]
\w[a-zA-Z0-9]\W[^a-zA-Z0-9]
\s[\r\t\n\f]\S[^\r\t\n\f]

abr01.pl

#!/usr/bin/perl

@a=qw(perl css html4.01 cgi ssi xhtml1.1 xml sgml xslt java javascript);

foreach $b (@a){
  
  if($b=~/\d/){     #数字を含む
      print"$b\n";
  }
}

繰り返し

rep01.pl

#!/usr/bin/perl

@a=qw(perl css html4.01 cgi ssi xhtml1.1 xml sgml xslt java javascript);

foreach $b (@a){
  
  if($b=~/s{2}/){     #sが2個
      print"$b\n";
  }
}

/a{3,5}/:aが3個以上5個

/a{5,}/:aが5個以上

括弧による記憶

bra01.pl

#!/usr/bin/perl

@a=qw(perl css html4.01 cgi ssi xhtml1.1 xml sgml xslt java javascript);

foreach $b (@a){
  
  if($b=~/j(.)v\1/){     #j任意の1文字v2文字目と同じ文字
      print"$b\n";
  }
}

a(.)b(.)c\2\1:a 1文字 b 1文字 c 4文字目と同じ文字 2文字目と同じ文字

選択

alt01.pl

#!/usr/bin/perl

@a=qw(perl css html4.01 cgi ssi xhtml1.1 xml sgml xslt java javascript);

foreach $b (@a){
  
  if($b=~/html|scr/){     #htmlかscr
      print"$b\n";
  }
}

大文字小文字の違いを無視

bs01.pl

#!/usr/bin/perl

@a=qw(perl css HTML cgi ssi xhtml1.1 xml sgml xslt java JavaScript);

foreach $b (@a){
  
  if($b=~/html|java/){     #htmlかjava
      print"$b\n";
  }
}

print"-----------------\n";

foreach $b (@a){
  
  if($b=~/html|java/i){     #htmlかjavaで、大文字小文字を区別しない
      print"$b\n";
  }
}

文字列の操作

文字列の置換

cha01.pl

#!/usr/bin/perl

@a=qw(sgml xslt javajava javascript);

foreach $b (@a){
  
  $b=~s/java/VB/;     #最初のjavaをVBに変換
  print"$b\n";
}

print"----------------------\n";

foreach $b (@a){
  
  $b=~s/java/VB/g;     #全てのjavaをVBに変換
  print"$b\n";
}

join演算子

join01.pl

#!/usr/bin/perl

@a=qw(perl css html cgi ssi xhtml1.1 xml sgml xslt java javascript);

$b=join(":",@a);    #:で結合

print"$b\n";

split演算子

split01.pl

#!/usr/bin/perl

$a="perl,css,html,cgi,ssi,xhtml1.1,xml,sgml,xslt,java,javascript";

@b=split(/,/,$a);    #,で分割

print"@b\n";

since 2005/08/05(Fri)

Perlの目次へ

トップページへ

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送