我正在尝试解析以下行的最后一个块:
77 0 wl1271/wpa_supplicant_lib/driver_ti.h
不幸的是,这些空格并不总是相同的长度。我假设printf或类似的东西用于输出数据,因此它排成一列。这意味着有时我会有空格,有时我会有制表符。
我通过在perl中使用正则表达式成功获得了前两个数字。我认为我会得到最后一点的方式是搜索任何空格字符的最后一次出现,然后从那里开始抓取其余的字符串。我尝试使用rindex
,但只接受可搜索参数的字符而不是正则表达式(我认为\s
可以做到这一点。)
任何人都可以解决我在这里遇到的问题,或者通过如何获取最后一个空格字符,或者通过帮助我解决其他方式获取该字符串的问题?
答案 0 :(得分: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
答案 1 :(得分:2)
为什么不匹配正则表达式\S+$
- 即字符串中最后一组非空白字符?
\S
=非空白字符$
=行尾编辑:你真的应该使用split
,正如Kenosis建议的那样。