【问题标题】:How to find the nth character or digit in a string using REGEX in Perl如何在 Perl 中使用 REGEX 查找字符串中的第 n 个字符或数字
【发布时间】:2012-03-10 14:02:27
【问题描述】:

我想在 perl 中使用正则表达式查找第 n 次出现的数字或字符。

例如:如果字符串是:

$string = 'abdg2jj4jdh5jfj6'

我需要匹配第 3 个数字 5。

我该如何使用正则表达式。

【问题讨论】:

    标签: regex perl


    【解决方案1】:
    my $string = "abdg2jj4jdh5jfj6";
    my @myArray = ($string =~ /(\d)/g);
    print "$myArray[2]\n";
    

    输出:

    5

    【讨论】:

    • 没有转换变量:my $nth = ($string =~ /(\d)/g)[2]
    • @TLP - 是的 - 我打算去那里,但我希望它更清楚地了解正在发生的事情。它还具有只需运行一次正则表达式即可获得任何数字的好处。
    【解决方案2】:

    Brian Roachs 答案的替代方法是使用这样的捕获组

    $string =~ /^\D*\d\D*\d\D*(\d)/;
    print $1;
    

    表示从字符串的开头匹配 0 个或多个非数字 (\D) 然后是一个数字 (\d),再次相同,然后是括号中您想要的数字,因此它将被存储在$1

    但是您需要更长的正则表达式,所以我更喜欢他的解决方案 (+1)。

    【讨论】:

      【解决方案3】:
      my $k = 2; # one less than N
      my ($digit) = $string =~ /(?:\d.*?){$k}(\d)/;
      

      【讨论】:

        【解决方案4】:

        我可以说“你不需要正则表达式”吗?

        您可以使用substr() 来完成。

        【讨论】:

        • 他想在一个字符串中找到第n个数字。这就是5 是“第三位数字”的方式。 substr() 无法做到这一点
        猜你喜欢
        • 2011-04-27
        • 1970-01-01
        • 1970-01-01
        • 2022-12-18
        • 2021-04-27
        • 1970-01-01
        • 2011-02-04
        • 2017-09-18
        相关资源
        最近更新 更多