正则表达式:关键字后跟值提取

时间:2011-04-08 09:21:57

标签: regex keyword

之前我有过几次这个问题,但我仍然找不到好的答案。

在我目前的问题中,我有一个控制台程序输出(字符串),如下所示:

Number of assemblies processed = 1200
Number of assemblies uninstalled = 1197
Number of failures = 3

现在我想提取这些数字并检查是否有失败。 (这是一个gacutil.exe输出,顺便说一句。)换句话说,我想匹配前面带有'failures ='的字符串中的任何数字[0-9] +。

我该怎么做?我想获得的数字。当然我可以匹配整个事情,比如/ failures = [0-9] + / ..然后用长度(“failures =”)或类似的东西修剪第一个字符。关键是,我不想这样做,这是一个蹩脚的解决方法。

因为它很奇怪;如果我的模式匹配但不输入输出(“failures =”) 之后我想要提取的东西([0-9] +),有一种方法可以做到这一点:

图案(?=表达式)

为了显示这种荒谬,如果整个文件被向后处理,我可以使用:

[0-9] +(?= = seruliaf)

......所以,没有前进的方向吗? :T

2 个答案:

答案 0 :(得分:3)

pattern(?=expression)是一个正则表达式的正面预测,你正在寻找的是正则表达式正面观察,就像这个(?<=expression)pattern但是所有正则表达式都不支持这个功能。这取决于您使用的语言。

更多信息regular-expressions.info用于比较此页面上的向下搜索功能向下滚动2/3。

答案 1 :(得分:0)

如果您的控制台输出实际上看起来一直如此,请尝试在找到“失败”一词时将字符串拆分为“=”,然后获取最后一个元素(或第二个元素)。你没有说出你的语言是什么,但任何具有字符串拆分功能的合适语言都能胜任。例如

gacutil.exe.... | ruby -F"=" -ane "print $F[-1] if /failure/"