如何提取两个不同字符串之间的数字
问题描述:
我是Perl新手,我有一种情况需要在两个不同的字符串之间提取数字。如何提取两个不同字符串之间的数字
我有这个字符串变量:
my $var = "1234 23.3\"
我怎样才能提取white-space
和dot
之间有多少?在该示例中,输出应为23
上面VAR串可能会发生变化,所以有时也可能是123 4.32
或123 334.4\
其中输出应分别4或334。
答
白空间可使用\s
反斜线序列相匹配,见perlrecharclass
:
\s
匹配任何单个字符视为空白
同样地,数字可以被匹配使用\d
:
\d
匹配考虑的单个字符是十进制数字。
要匹配一个句点或点,提防点是一个正则表达式元字符,将匹配任何字符(除换行符),见perlre
和perlretut
,因此如果要匹配点明确,你应该逃避它。
因此,鉴于$var = "1234 23.3"
,下面的语句:
$var =~ /\s+(\d+)\./;
应在空格后和点到捕获组变量$1
之前提取的数量。有关+
元字符的更多信息,请参阅perlre
以及有关捕获组的信息。
'perl -E'$ var =“1234 23.3”; $ var =〜/\s+(\d+)\./;说$ 1'' –
['perldoc perlretut'](http://perldoc.perl.org/perlretut.html) – melpomene
你尝试过什么吗? –