我是 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 个标量变量中。请建议一个正则表达式来提取这些。
提前致谢
我是 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 个标量变量中。请建议一个正则表达式来提取这些。
提前致谢
#!/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
。
使用 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
my ($x, $y) = split /------/, $string;
my ($z) = $y =~ /(\S+)\z/;