タグ

Perlに関するmasaka99のブックマーク (3)

  • 正規表現の解説 上級編

    一般的な正規表現を使ったツールでは中級編までの内容がそのまま使えると思います。 たとえばSedやAWKならば問題なく使えます。 ここではPerl等のかなり強力なツールでしか使えないような表現を説明します。 もちろん、K2Editorでも使える表現です。 以前出てきた繰り返し表現では、繰り返し回数を指定する事はできませんでした。 たとえば、aの3回繰り返しを検索したい場合、 「a+」では3回繰り返し以外でもマッチしてしまいます。 ですから、「aaa」としなければなりません。 拡張された表現では繰り返し回数を指定できます。 基的な書式は「{n,m}」です。 nが最小回数、mが最大回数です。 最大と最小が同じ場合、つまり固定回数の時には 「{n}」と書きます。 aの3回繰り返しは 「a{3}」と書けます。 2回以上5回以下の繰り返しは 「{2,5}」と書けます。 5回以上の繰り返しは 「{5,

  • 正規表現サンプル(文字列を置換しよう)

    後方参照について 後方参照とは、置換前の一部の文字列を( )でくくると、その文字列を置換後に$1,$2,$3...という文字で参照することを言います。 たとえば、以下のように使います。 1: $x = '0173123456'; 2: $x =~ s/(\d\d\d\d)(\d\d)(\d\d\d\d)/$1-$2-$3/; 3: print $x; > 0173-12-3456 このプログラムは、1行目では変数$xに'0173123456'を代入。2行目では$xの中身を置換。3行目では$xの内容を表示しています。 2行目の置換を詳しく説明すると、まず置換前の文字列に ( ) が3つ登場しています。これは、後方参照を3つ作ることを意味します。そして置換後では、$1,$2,$3 という変数で ( ) に一致した文字列を参照しています。( ) と $1,$2,$3 は前

  • 正規表現サンプル(最短一致について)

    「.*」や「.+」を使うと、限りなく連続した文字を表します。 これは非常に便利なのですが、予想以上に長くマッチして、思ったように動かないことがあります。 これを解決するためには「?」を付加して最短一致するように仕向ける方法があります。 また、ここで説明する「?」は「直前の文字の0回または1回に一致」とは違います。 文字は同じですが、まったくの別物です。(記述する位置で見分けてください。) たとえば、HTMLのタグを消す場合、このように書いたとします。(Perlの置換文法) s/<.+>//g これでタグは消えるのですが、タグだけではなく、タグに挟まれた間の文字まで消してしまいます。(下線部分) <P>abc</P> 理由は最長一致モードで動作しているからです。 動作をみると、途中に「>」が出てきているのですが、そこでは止まらず、最後の「>」までマッチしていま

  • 1