【发布时间】:2015-12-02 14:28:54
【问题描述】:
所以现在我正在文件中寻找一些东西。我得到一个value 变量,它是一个相当长的字符串,带有换行符等。然后,我使用 re.findall(regex, value) 来查找正则表达式。正则表达式相当简单——类似于“abc de.*”。
现在,我不仅要捕获正则表达式的所有内容,还要捕获上下文(就像 grep 的 -C 标志)。
所以,假设我将 value 转储到文件并在其上运行 grep,我会做的是 grep -C N 'abc de .*' valueinfile
如何在 Python 中实现相同的功能?我需要使用 Unicode 正则表达式/文本的答案。
【问题讨论】:
-
添加示例文本以及您想从中提取什么?
-
@SIslam 文本无关紧要。我想要
grep -C的功能。我没有示例文本,我可以想出它,但恕我直言,这不是必需的,因为该工具定义了功能。 -
@IgnacioVazquez-Abrams 链接呢?
-
使用双端队列来存储最后的 n 行(一旦存在很多行,每添加一个新行就弹出左列)。当您的正则表达式找到匹配项时,返回堆栈中的前 n 行,然后迭代 n 更多行并返回这些行。这使您不必在任何行上迭代两次(DRY),并且只在内存中存储最少的数据。