タグ

Perlとregexに関するmasaka99のブックマーク (2)

  • 正規表現の解説 上級編

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

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

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

  • 1