Perl Regex在\之前获取字符串中的最后一位数字

时间:2017-08-08 17:03:51

标签: regex perl

你知道结合这两个正则表达式的方法吗? 或者以任何其他方式获取最后一个$3==b之前的最后6位数字。

我想要的最终结果是\来自字符串:

  

100144

以下是我尝试过的一些事情

\\XXX\Extract_ReduceSize\MonitoringExport\dev\files\100144\

删除导致

的字符串的尾随(.{1})$
  

\

\\XXX\Extract_ReduceSize\MonitoringExport\dev\files\100144

删除导致.*\\

的最后\之前的所有内容

我使用的软件只需要一行。所以我可以进行2次通话。

3 个答案:

答案 0 :(得分:1)

既然你想要最后一个,那么([^\\]*)\\$会合适吗?这与最后一个斜杠之前尽可能多的非斜杠字符匹配。或者,如果您不想提取第一个组,则可以使用([^\\]+)(?=\\$)进行预测。

答案 1 :(得分:1)

此代码显示了两种不同的解决方案。希望它有所帮助:

use strict;
use warnings;

my $example = '\\XXX\Extract_ReduceSize\MonitoringExport\dev\files\100144\\';

# Method 1: split the string by the \ character. This gives us an array, 
# and then, select the last element of that array [-1]
my $number = (split /\\/, $example)[-1];
print $number, "\n"; # <-- prints: 100144

# Method 2: use a regexpr. Search in reverse mode ($), 
# and catch the number part (\d+) in $1
if( $example =~ m!(\d+)\\$! ) {
    print $1, "\n"; # <-- prints: 100144
}

答案 2 :(得分:1)

这可以提取最后一段数字:

(\d+)(?=\\$)