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

问题描述:

我被卡在一个正则表达式中,在该正则表达式中必须在python中提取日夜数据限制。我需要提取只在白天和黑夜的数据量,我的数据看起来像this一个正则表达式,用于提取一个字符串,后跟一个包含任何字符和数字的特定字符串

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

  1. 检索可用
  2. 夜间数据检索当天可用的数据

我对“日期数据”所做的是([0-9]+(\.[0-9][0-9]?)?\s?GB|[0-9]+(\.[0-9][0-9]?)?\s?MB).*\+,通过它我将在+之前捕获字符串,然后将捕获python中的数据量。这对于大多数数据是正确的,但不是全部。我想要捕获最大值。

我想二重的,通过“天”和“夜”之前捕获的数据(也有可能是char,无以还之间)。例如: 4GB天+ 3GB夜间数据

输出:

Day data limit Night Data Limit 
4GB     3GB 

模式各不相同,但从我设法发现(不分析所有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

+0

感谢您的指导。在RE中学到新东西 –

+0

有一个问题,在夜晚做什么之前{0,2}是什么? –

+0

好吧,我知道了,但是晚上没有给出答案。因为它是远离+没有空间,我试图在非捕获组中添加\ +。它可以工作,但现在它不会选择一些夜间数据行。在哪里我错了? –