2017-05-18 3 views
-3

文字列をカンマとスペースで分割し、特殊文字で終了します。 例えば:Perlでは、文字列からコンマで区切られた数字のリストをどのように抽出できますか?

$str = "val=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16&"; 

Iが「1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16 私を取得する必要がPerlでコードが

$str = "val=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16&"; 
$str =~ /val\=(\S+)/; 
print "$1\n"; 

ですが、私は唯一の「1」を取得します。 私は、コンマの後にスペースが必要です。あなたのパターンでは

答えて

0

、あなたは等号次の非空白文字の最初のシーケンスを求めますそれはあなたが得るものです。ちなみに、あなたは=記号をエスケープする必要はありませんパターンで。

あなたはアンパサンド(&)が結果に含まれるようにしたい場合は、そうでない場合は、次のことがもっと自分のニーズに合うかもしれ

my (undef, $v) = split /=/, $str, 2; 

を使用することができます。

my ($v) = ($str =~ /^val = ([^&]+)/x); 
+0

構文を説明できますか? – alex

0

をこのような文字列が必要な場合は、「1,2,3、...」:

$str =~ s/[^0-9,\s]//g; 
print "$str\n"; 

nの配列が必要な場合umber:

my @a = $str =~ /\d+/g; 
+0

構文を説明できますか? – alex

+0

ここで説明を見つけることができます:https://perldoc.perl.org/perlre.html regexpに関する最大の本:http://regex.info/ - あなたの人生を変えることができますJ. –

関連する問題