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



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

这是我的字符串

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

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

1221.899999

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

我只会使用正则表达式。

my $str = 'Hello my server number is 1221.899999 , please select an option';
my ($num) = $str =~ /Hello my server number is (d+.d+) ,/;

如果匹配未成功,$num将未定义。

怎么样:

$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

我会使用正则表达式。这个怎么样:

$str = 'Hello my server number is 1221.899999 , please select an option';
print $1 if $str =~ /is (.*) ,/;

只要您确定逗号前总是有一个空格,正确的答案与此类似

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

最新更新