使用perl提取两个分隔符之间的子字符串并存储为新字符串

时间:2014-02-26 17:41:50

标签: perl

我正在研究一个Perl脚本,我想在两个不同的变量之间拆分一个字符串。

这是我的字符串

<p>Hello my server number is 1221.899999 , please select an option</p>

我希望能够提取服务器编号,因此我想在<p>Hello my server number is之后和以下空格之前拆分字符串,因此我的结束字符串将打印为

1221.899999

正则表达式是最好的解决方案吗,而不是使用拆分?

4 个答案:

答案 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,]+)/;