2017-02-12 130 views
-4

我是Perl新手,我有一种情况需要在两个不同的字符串之间提取数字。如何提取两个不同字符串之间的数字

我有这个字符串变量:

my $var = "1234 23.3\" 

我怎样才能提取white-spacedot之间有多少?在该示例中,输出应为23

上面VAR串可能会发生变化,所以有时也可能是123 4.32123 334.4\其中输出应分别4或334。

+0

'perl -E'$ var =“1234 23.3”; $ var =〜/\s+(\d+)\./;说$ 1'' –

+3

['perldoc perlretut'](http://perldoc.perl.org/perlretut.html) – melpomene

+0

你尝试过什么吗? –

回答

0

白空间可使用\s反斜线序列相匹配,见perlrecharclass

\s匹配任何单个字符视为空白

同样地,数字可以被匹配使用\d

\d匹配考虑的单个字符是十进制数字。

要匹配一个句点或点,提防点是一个正则表达式元字符,将匹配任何字符(除换行符),见perlreperlretut,因此如果要匹配点明确,你应该逃避它。

因此,鉴于$var = "1234 23.3",下面的语句:

$var =~ /\s+(\d+)\./; 

应在空格后和点到捕获组变量$1之前提取的数量。有关+元字符的更多信息,请参阅perlre以及有关捕获组的信息。

相关问题