加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 反向正则表达式搜索

发布时间:2020-12-14 05:46:17 所属栏目:百科 来源:网络整理
导读:我有一个字符串,其中包含“foo”后跟数字.我想在字符串中的最后一个foo后打印数字.我被告知,实现这一目标的唯一方法是扭转字符串本身.这不是很优雅,我很惊讶Perl没有更好的方法来完成工作.有没有比这更好的方法呢? #!/usr/bin/perl# works,but is ugly!!!$s
我有一个字符串,其中包含“foo”后跟数字.我想在字符串中的最后一个foo后打印数字.我被告知,实现这一目标的唯一方法是扭转字符串本身.这不是很优雅,我很惊讶Perl没有更好的方法来完成工作.有没有比这更好的方法呢?

#!/usr/bin/perl
# works,but is ugly!!!
$string = "foo1 foo3 foo5 bar foo911 baz";
$string = scalar reverse($string);
$string =~ m/(d+)oof/;
print scalar reverse("$1");

解决方法

怎么样:

$string =~ /.*foo(d+)/;

澄清:

$string =~ /.*     # Match any character zero or more times,greedily.
            foo    # Match 'foo'
            (d+)  # Match and capture one or more digits.
           /x;

贪婪的“任何角色”匹配将匹配字符串中的第一个“foo”,并且您将只留下匹配最后一个“foo”.

例:

#!perl -w

use strict;
use 5.010;

my $string = "foo1 foo2 foo3";
$string =~ /.*foo(d+)/;
say $1;

输出:

% perl regex.pl
3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读