タグ

2016年6月6日のブックマーク (3件)

  • 正規表現 /g と \G - suu-g's diary

    Perlの正規表現、 \G の項目がどうにも分からん! だって末尾に /g をつけたら最後まで検索しちゃうんでしょ? $html =~ s/\G\s*<h[1-6]>/<span class="dekamoji">/g; みたいなのが何の意味があるのさ? ↑つい二時間前まではこう思ってた。 でも、それは大きなミステイクだった。 \Gもまた、正規表現の能力を単なるマッチや置換から大幅にパワーアップさせてくれる要素だったんだ。 勘違いの始まりは、正規表現を学べば誰もが目にする s///g からだった。 $mojiretsu =~ s/hogehoge/fugafuga/g; とすると、検索文字列 $mojiretsu 中のすべての hogehoge を fugafuga に置換する。 でも、それだけだとあまりよい理解じゃなかったんだ。 s///g と似た形をしている、 m//g というコンテキ

    正規表現 /g と \G - suu-g's diary
    note103
    note103 2016/06/06
  • /gcと\Gを使って複数の正規表現式でトークンを少しずつ削りとる - Islands in the byte stream (legacy)

    複数の正規表現式で文字列からトークンを切り出したいことがある。しかし、以下のコードは動かない。無限ループになってしまう。 #!perl -w # THIS DOES NOT WORK!!! use 5.10.0; use strict; use utf8; my $s = 'foo bar baz FOO BAR BAZ'; while( 1 ) { if( $s =~ /\b (f..) \b/xmsig) { # first matching expression say $1; } elsif( $s =~ /\b (b..) \b/xmsig) { # second matching expression say $1; } else { die 'finished'; } } これは[twitter:@akajiro]さんと[twitter:@hio]さんに教えてもらった結果、解

    /gcと\Gを使って複数の正規表現式でトークンを少しずつ削りとる - Islands in the byte stream (legacy)
    note103
    note103 2016/06/06
  • perlrequick - Perl 正規表現のクイックスタート - perldoc.jp

    This page covers the very basics of understanding, creating and using regular expressions ('regexes') in Perl. このページは、Perl の正規表現 ('regexes') の理解、作成、使用の基中の 基に対応しています。 ガイド¶ 単純な単語のマッチング¶ The simplest regex is simply a word, or more generally, a string of characters. A regex consisting of a word matches any string that contains that word: In this statement, World is a regex and the // enclosing /Wor

    note103
    note103 2016/06/06
    “文字列に対するマッチングの成功によって //g はマッチングからマッチングにジャンプし、文字列の位置を記録し続けて いきます。 pos() 関数を使って位置を取得または設定できます。”