2011-11-16 398 views
1

我正在尝试通过使用Perl读取/ proc/version文件的内核& gcc版本。但我不确定,但正则表达式匹配的版本。我试过这样的东西Perl正则表达式匹配字母数字

/Linux version (\d+)*gcc version(\d+)*/ 

但它不工作。提前致谢。我是Perl的新手。和版本的内容是

Linux版本的2.6.32-21泛型(buildd @罗瑟拉)(GCC 4.4.3版 (Ubuntu的4.4.3-4ubuntu5))#32 Ubuntu的SMP周五4月16日8时10分02秒UTC 2010

+0

纳伦德拉Yadala的答案是正确的,我测试了它。 – 2011-11-16 14:52:49

回答

1

此正则表达式会为你工作

/Linux version ([\w.-]*).*?gcc version ([\w.]*)/ 

首先捕获组将具有Linux版本2.6.32-21-generic和第二摄影组将有gcc版本4.4.3。如果您不想捕获generic,则使用\d而不是\w

2

试试这个:

$version =~ /Linux version ([\d.-]+)-\D.*gcc version ([\d.]+) /; 
print "Linux version: $1\ngcc version: $2\n"; 

输出:

Linux version: 2.6.32-21 
gcc version: 4.4.3 
1
m{Linux version\s(\S+).*gcc version\s(\S+)} and print "$1\n$2\n"