1

我有一个引擎,它接受一个行正则表达式(提取单行)和一个公共列正则表达式(从每一行中提取列)

但我无法获得一个通用列正则表达式,它可以将下面的示例文本提取到具有通用索引的列中(由引擎完成)

示例文本:您可以在此处进行测试

/misc/qk12              (innfs1:/vol/fs06/qk12  ) : 314572800 total allocated Kb
                                                  62636476 free allocated Kb
                                                  251936324 used allocated Kb
                                                        81 % allocation used
/home/psum           (innfs2_42:/vol/goshihome/goshihome/home/psum) : 2349649104 total allocated Kb
                                                  405498596 free allocated Kb
                                                  1944150508 used allocated Kb
                                                        83 % allocation used
/home/aman           (innfs2_42:/vol/goshihome/goshihome/home/aman) : 2349649104 total allocated Kb
                                                  405498596 free allocated Kb
                                                  1944150508 used allocated Kb
                                                        83 % allocation used
/u01                   (/dev/vg00/u01vol      ) :  9559429 total allocated Kb
                                                   4077136 free allocated Kb
                                                   5482293 used allocated Kb
                                                        58 % allocation used

现在在测试中

您可以看到第一 2 行很好地\s+用于将每一行划分0,1,3,7,11,15为相关信息的索引,但是对于接下来的 2 行它会失败,因为(innfs1:/vol/fs06/qk12 ).

所以我想知道是否有人可以帮助我使用正则表达式来匹配所有不以直接字符结尾的空格)

4

2 回答 2

1

您可能想在 Regex 结束时尝试积极的前瞻。积极的前瞻部分是非捕获的,但它有助于缩小匹配范围:

\s+(?!\s*\))

(?! )构造是一个group,由圆括号定义,该?!部分创建一个非捕获前瞻,这意味着该组被用作匹配的一部分,但该组匹配的内容不包含在匹配的输出中.

创建一个“\s*零个或多个空格”,并且在\)空格之后需要一个括号。

参考非常好的页面,解释了前瞻/后视(环顾)正则表达式:http ://www.regular-expressions.info/lookaround.html

于 2012-07-27T07:44:15.373 回答
0

我的第一个想法是否定括号。(\s*?!\))

于 2012-07-27T07:30:43.610 回答