概要

  • 正規表現によるマッチ結果をリスト化する。
  • リストコンテキストで /g を付けて評価する。

ソース

  • filematchlist.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
    
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    -
    |
    |
    !
     
     
     
     
    -
    |
    !
     
     
    
    # マッチ結果のリスト化
    # リストコンテキストで /g を付けて評価する。
     
    use strict;
    use warnings;
    use utf8;
    use Encode;
     
    #my $charsetConsole	= 'UTF-8';
    my $charsetConsole    = 'CP932';
    my $charsetFile        = 'UTF-8';
     
    binmode( STDIN,  ":encoding($charsetConsole)" );
    binmode( STDOUT, ":encoding($charsetConsole)" );
    binmode( STDERR, ":encoding($charsetConsole)" );
     
    # 次の文字列を「key=val」として分解する
    # key は空白を含みうる。val は空白を含まない。
    # 「t u」はマッチしないので無視される
    my $line = "aa = bb cc dd= ee ff gg hh= ii jj kk = ll mm=nn o= p q r= s t u";
    print "${line}\n\n";
     
    # ペア単位でリスト化した後、key/valに分解。順序は保存される。
    foreach my $pair ( $line =~ /[^=]*\S\s*=\s*\S+\s*/g ){
        my( $key, $val ) = ( $pair =~ /^([^=]*\S)\s*=\s*(\S+)\s*$/ );
        print "key:'${key}'\tval:'${val}'\n";
    }
    print "\n";
     
    # マッチ結果リストをハッシュとして受ける。順序は保存されない。
    my %pairs = ( $line =~ /([^=]*\S)\s*=\s*(\S+)\s*/g );
    foreach my $key ( keys( %pairs ) ){
        print "key:'${key}'\tval:'${pairs{$key}}'\n";
    }
     
    # EOF
    

出力結果

aa = bb cc dd= ee ff gg hh= ii jj kk = ll mm=nn o= p q r= s t u

key:'aa'        val:'bb'
key:'cc dd'     val:'ee'
key:'ff gg hh'  val:'ii'
key:'jj kk'     val:'ll'
key:'mm'        val:'nn'
key:'o' val:'p'
key:'q r'       val:'s'

key:'jj kk'     val:'ll'
key:'mm'        val:'nn'
key:'q r'       val:'s'
key:'ff gg hh'  val:'ii'
key:'cc dd'     val:'ee'
key:'aa'        val:'bb'
key:'o' val:'p'

添付ファイル: filematchlist.zip 204件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Wed, 27 Feb 2013 06:40:45 JST (1790d)