之前我有过几次这个问题,但我仍然找不到好的答案。
在我目前的问题中,我有一个控制台程序输出(字符串),如下所示:
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
答案 0 :(得分:3)
pattern(?=expression)
是一个正则表达式的正面预测,你正在寻找的是正则表达式正面观察,就像这个(?<=expression)pattern
但是所有正则表达式都不支持这个功能。这取决于您使用的语言。
更多信息regular-expressions.info用于比较此页面上的向下搜索功能向下滚动2/3。
答案 1 :(得分:0)
如果您的控制台输出实际上看起来一直如此,请尝试在找到“失败”一词时将字符串拆分为“=”,然后获取最后一个元素(或第二个元素)。你没有说出你的语言是什么,但任何具有字符串拆分功能的合适语言都能胜任。例如
gacutil.exe.... | ruby -F"=" -ane "print $F[-1] if /failure/"