LookBehind - 查找模式后出现的字符串

时间:2018-04-04 11:27:46

标签: regex lookbehind

我需要有关正则表达式查询的帮助: -

C: - total 79.45 Gb - used: 33.82 Gb (43%) - free 45.63 Gb (57%) 

这是我的示例文字。我想找到已用磁盘的%使用率。即在我的情况下为43%。 我使用lookbehind来查找“used”关键字后的出现次数。 这是我使用(?<=(\bused))(.*?\(\d*%\))的模式。但是这给了我: 33.82 Gb (43%)作为输出。我只需要43作为输出。 任何人都可以请帮助

2 个答案:

答案 0 :(得分:1)

尝试仅捕获\d*部分:

(\bused)(.*?\((\d*)%\))
              *   *

星号是第3组,即你想要的组,开始和结束的地方。

或者你可以让其他所有组都不捕获,并获得第1组:

(?:\bused)(?:.*?\((\d*)%\))

Demo

答案 1 :(得分:0)

使用python3你可以这样写:

import re
re_findall = re.findall("used:.*\(([0-9]*)%\) -",line)

行是:

C: - total 79.45 Gb - used: 33.82 Gb (43%) - free 45.63 Gb (57%) 

这类似于Sweeper所说的,你只是&#34;捕捉&#34;这里使用python模块的数字。