私は、角括弧で囲まれたデータの複数のインスタンスを含む行を持っています。perlを使って一行に数回現れる角括弧の間にデータを抽出するにはどうすればよいですか?
[data 1] junk [data 2] junk,junk [data 3] junk [data 4]
goo正規表現はありますか?だから私は使用することができます
print $1,$2,$3,$4;
ありがとう!
私は、角括弧で囲まれたデータの複数のインスタンスを含む行を持っています。perlを使って一行に数回現れる角括弧の間にデータを抽出するにはどうすればよいですか?
[data 1] junk [data 2] junk,junk [data 3] junk [data 4]
goo正規表現はありますか?だから私は使用することができます
print $1,$2,$3,$4;
ありがとう!
my $s = "[data 1] junk [data 2] junk,junk [data 3] junk [data 4]";
my ($one, $two, $three, $four) = $s =~ /\[([^\]]*)\]/g;
print $one, $two, $three, $four;
正規表現の代わりにText::Balancedを使用してください。
あなたが探して、すべてが迅速にプリントアウトがある場合、これはそれを行う必要があります..あなたは、正規表現がジャンクデータにかなり依存していることを作る方法
print join(', ', @{[$s =~ /\[(.*?)\]/g]}), "\n";
。また、角括弧がネストできる場合、その言語は正規表現で解析できないほど複雑です。あなたはPerlの正規表現の拡張でそれを行うことができますが、地獄のように汚いです。その場合はパーサジェネレータを使用する方が良いでしょう。 – arnsholt$s = q([data 1] junk [data 2] junk,junk [data 3] junk [data 4]);
時間[846.078000]〜[857.562000]、クロック[Clock1]、月[12月] – nebulus