2011-08-20 4 views
3

ための正規表現は、私はこのこの配列

while ($mystring =~ m,/"(.*?)"/|,|[/"(.*?)"|,|/],g); 
print "Your Color is : [$1]\n"; 
を試みるのは、色

にマッチする正規表現とは何か、私はこの

["What Color",["Red","Blue","Green","Yellow","Brown","White"]]

のようなテキストの体を持っていると言う何をしてみましょうさ

誰かがこのperlスクリプトの印刷を助けることができます

 
- Your Color is: Red 
- Your Color is: Blue 
- Your Color is: Green 
- Your Color is: Yellow 
- Your Color is: Brown 
- Your Color is: White 
+2

正規表現と配列は一緒に行っていません。 – BoltClock

+1

JSONを使用しない理由http://search.cpan.org/~makamaka/JSON-2.53/lib/JSON.pm? – hsz

答えて

6

このテキストは有効なJSON文字列であるとして、あなたはJSONとそれを解析することができます

use JSON; 

my $json = '["What Color",["Red","Blue","Green","Yellow","Brown","White"]]'; 
print "- Your Color is: $_\n" for @{ decode_json($json)->[1] } 
+0

@daniaよろしくお願いします。 –

3

有効JSON文字列であることに加え、それはまた、文字列を評価することにより抽出することができる有効なPerlの構造です。 (!または安全な)これは、そこにすべての文字列のために実用的ではないかもしれないが、この特定の一つのために、それが動作します:

use strict; 
use warnings; 
use feature qw(say); 

my $h = eval("['What Color',['Red','Blue','Green','Yellow','Brown','White']]"); 
my $tag = $h->[0]; 
my @colors = @{$h->[1]}; 
say "- Your '$tag' is: $_" for (@colors); 

出力:

C:\perl>tx.pl 
- Your 'What Color' is: Red 
- Your 'What Color' is: Blue 
- Your 'What Color' is: Green 
- Your 'What Color' is: Yellow 
- Your 'What Color' is: Brown 
- Your 'What Color' is: White 
関連する問題