2011-12-21 22 views
0

1行の文字列に対して複数の一致を抽出する必要があります。Perl - 同じ行で複数の一致が交互に発生する

./staticRoutes.10.10.30_VC;./staticRoutes.10.10.40_FEEDS

私は、各ファイル名を抽出し、いくつかの@arrayでそれを配置する必要があります:行は次のようになります。行のファイル名は、で区切られています。。したがって、上記の例では、私はちょうどstaticRoutes.10.10.30_VCstaticRoutes.10.10.40_FEEDS

すべてのヘルプ大歓迎を抽出したいです。

感謝

ジョン

答えて

0

これは、正規表現のバージョンになり、それは結果の大手./が含まれていないでしょう。これが価値があるなら、これを使うことができます。そうでなければ分割ソリューションを好むでしょう。

my $s = "./staticRoutes.10.10.30_VC;./staticRoutes.10.10.40_FEEDS"; 
my @res = $s =~ m~[^/]+(?=;|$)~g; 

これは、まず;または文字列の末尾((?=;|$)一部)

+0

これは治療法です!あなたの助けをたくさんありがとう – Wilko

+0

これはフィールドに常に '/'が含まれている場合にのみ機能することに注意してください。それを修正したい場合には、ネゲートされた文字クラスに ';'を追加してください。 – Qtax

2
my $some_string = './staticRoutes.10.10.30_VC;./staticRoutes.10.10.40_FEEDS'; 
my @array = split /;/, $some_string; 
+0

前に、ご返信のための多くのおかげで/ではない任意の文字([^/]+一部)と一致します。私は各試合から./を取り除く必要があります。今私は代替コードを使ってそれを行うことができることを知っている/コードの別の行に置き換えますが、私はそれを行う必要はありませんので、マッチを行うことが可能です..? – Wilko

関連する問題