0

我正在尝试解析以下行的最后一块:

77      0       wl1271/wpa_supplicant_lib/driver_ti.h

不幸的是,这些空间并不总是相同的长度。我假设 printf 或类似的东西被用来输出数据,所以它排成列。这意味着有时我有空格,有时我有制表符。

我已经通过在 perl 中使用正则表达式成功地获得了前两个数字。我认为我会得到最后一点的方式是搜索任何空白字符的最后一次出现,然后从那里抓取字符串的其余部分。我尝试使用rindex,但它只接受可搜索参数的字符而不是正则表达式(我认为这\s可以解决问题)。

谁能解决我在这里遇到的问题,或者通过介绍如何获取最后一个空格字符或帮助我解决以其他方式获取该字符串的解决方案?

4

2 回答 2

4

为什么不split呢?

use strict;
use warnings;

my $string = '77      0       wl1271/wpa_supplicant_lib/driver_ti.h';
my ( $num1, $num2, $lastPart ) = split ' ', $string;

print "$num1\n$num2\n$lastPart";

输出:

77
0
wl1271/wpa_supplicant_lib/driver_ti.h
于 2013-02-15T03:42:35.017 回答
2

为什么不只匹配正则表达式\S+$- 即字符串中的最后一组非空白字符?

  • \S= 非空白字符
  • $= 行尾

编辑:你真的应该使用split,正如 Kenosis 所建议的那样。

于 2013-02-15T03:25:38.327 回答