-2

Perl は初めてで、ファイルのパスを抽出しようとしています。適切な正規表現で私を助けてください、これは私のコードです:

$string = "D:/EZ-VPN/NKEMSL0-V02.txt------vpnclient server 156.37.253.97"; 

"D:/EZ-VPN/NKEMSL0-V02.txt"抽出し"156.37.253.97"て2つのスカラー変数に保存したい。これらを抽出するための正規表現を提案してください。

前もって感謝します

4

3 に答える 3

4
#!/usr/bin/perl

use strict;

my $string = "D:/EZ-VPN/NKEMSL0-V02.txt------vpnclient server 156.37.253.97"; 

$string =~ m/(.*?)--+.* (\d+\.\d+\.\d+\.\d+)/;

print $1."\n";
print $2."\n";

これはうまくいくはずです。

Perl は、変数内の正規表現の中かっこ (いわゆるキャプチャ グループ) から結果を収集し$1, $2 ... $nます。

ファイル名は に$1あり、IP アドレスは にあり$2ます。

于 2012-11-12T07:51:07.107 に答える
2
my ($x, $y) = split /------/, $string;
my ($z) = $y =~ /(\S+)\z/;
于 2012-11-12T08:16:25.410 に答える
2

6 つの連続したダッシュの文字列を使用して、パスの終わりをマークします。

my($path, $ipaddress) = ($string =~ m/(.*?)------.* (\d+\.\d+\.\d+\.\d+)/);

テスト スクリプト:

#!/usr/bin/env perl
use strict;
use warnings;
my $string = "D:/EZ-VPN/NKEMSL0-V02.txt------vpnclient server 156.37.253.97"; 
my($path, $ipaddress) = ($string =~ m/(.*?)------.* (\d+\.\d+\.\d+\.\d+)/);
print "path = $path; IP = $ipaddress\n";

出力:

path = D:/EZ-VPN/NKEMSL0-V02.txt; IP = 156.37.253.97
于 2012-11-12T07:53:55.890 に答える