如何在“触发单词”后从字符串中提取一组数字

时间:2015-12-30 06:56:45

标签: regex perl

我是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";
}

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

^.*\bMy\b(*SKIP)(*F)|\$([\d,]+)

您可以在此处使用(*SKIP)(*F)。参见演示。

https://regex101.com/r/fM9lY3/52

答案 1 :(得分:1)

My.*?\K\$\d+(,\d+)?

See it in action

<小时/> 这个想法是:

  • 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