我是Perl和Regular Expression的初学者。我想在$之后提取一定数量的美元。所以我写下面的代码。但是,我试图避免使用第一个$符号,也就是说,在这种情况下我只想要“My”之后的信息。
my $str = 'His house is small; only worth $90,000;My house is so big; it worth $179,000; ';
if ( $str =~ /\$([\d,]+)/) {
my $used = $1;
print "House Price: $used\n";
}
任何帮助都将不胜感激。
答案 0 :(得分:1)
答案 1 :(得分:1)
My.*?\K\$\d+(,\d+)?
<小时/> 这个想法是:
My
- 找到My
.*?
- 匹配最少量的字符,直至找到$
标志\K
- drop everything matched so far(因此未包含在结果中)\$\d+(,\d+)?
- 支持整数或浮动金额$
s 答案 2 :(得分:1)
my $str = 'His house is small; only worth $90,000;My house is so big; it worth $179,000; ';
if ( $str =~ /My.*?\$(\d+,\d+)?/) {
my $used = $1;
print "House Price: $used\n";
}
房价:179,000