一个正则表达式,用于提取字符串,后跟包含任何字符和数字的特定字符串

时间:2017-06-15 13:36:03

标签: python regex

我遇到了一个正则表达式,其中必须在python中提取日夜数据限制。我需要提取的只是夜晚和日期的数据量,我的数据看起来像this

由于数据非常大,我想要两个正则表达式:

  1. 用于检索可用的夜间数据
  2. 用于检索可用的日期数据
  3. 我为“day data”创建的是([0-9]+(\.[0-9][0-9]?)?\s?GB|[0-9]+(\.[0-9][0-9]?)?\s?MB).*\+,我将在+之前捕获字符串,然后捕获python中的数据量。这对大多数数据都是正确的,但对所有数据都不正确。我希望捕获最大数据。

    我想要两个RE来捕获前面有'day'和'night'的数据(可能还有char和no之间)。例如: 4gb日+ 3gb夜间数据

    输出:

    Day data limit    Night Data Limit
    4GB                  3GB
    

1 个答案:

答案 0 :(得分:0)

模式各不相同,但是从我设法发现的(不分析所有6K +行)开始,daynight通常在相应数量之后变为零到两个单词。只有在跟随其他模式后,您才可以使用正向前瞻来匹配模式。

因此,对于当天的数据,您最终可能

(?i)\d+(?:\.\d{1,2})?\s?[MG]B(?=\s+(?:\S+\s+){0,2}day\b)

演示:https://regex101.com/r/jdCtld/2

对于夜间数据,它几乎是一样的:

(?i)\d+(?:\.\d{1,2})?\s?[MG]B(?=\s+(?:\S+\s+){0,2}night\b)

演示:https://regex101.com/r/t2WSjz/3