我正在研究一个Perl脚本,我想在两个不同的变量之间拆分一个字符串。
这是我的字符串
<p>Hello my server number is 1221.899999 , please select an option</p>
我希望能够提取服务器编号,因此我想在<p>Hello my server number is
之后和以下空格之前拆分字符串,因此我的结束字符串将打印为
1221.899999
正则表达式是最好的解决方案吗,而不是使用拆分?
答案 0 :(得分:2)
我只想使用正则表达式。
my $str = 'Hello my server number is 1221.899999 , please select an option';
my ($num) = $str =~ /Hello my server number is (\d+\.\d+) ,/;
如果匹配失败, $num
将被定义。
答案 1 :(得分:1)
怎么样:
$str = 'Hello my server number is 1221.899999 , please select an option';
$str =~ s/^.*\b(\d+\.\d+)\b.*$/$1/;
say $str;
或
$str =~ s/^Hello my server number is (\d+\.\d+)\s.*$/$1/;
如果字符串的开头始终如此。
<强>输出:强>
1221.899999
答案 2 :(得分:0)
我会使用正则表达式。怎么样:
$str = 'Hello my server number is 1221.899999 , please select an option';
print $1 if $str =~ /is (.*) ,/;
答案 3 :(得分:0)
只要您确定在逗号之前总是有空格,正确答案与此类似
my $string = '<p>Hello my server number is 1221.899999 , please select an option</p>';
my ($server) = $string =~ /server number is (\S+)/;
print $server;
<强>输出强>
1221.899999
如果逗号可以在服务器编号结束后立即显示,那么您需要稍微修改一下
my ($server) = $string =~ /server number is ([^\s,]+)/;