如何捕获正则表达式匹配周围的几行?


8

我正在寻找一个正则表达式,以匹配匹配行上的几行。例如:

ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX

我想捕获XXXXXXXX上方的2行。

任何帮助,将不胜感激。注意:使用Python使用库re


1
使用什么软件?对于正则表达式,不同的程序有不同的想法。
David Richerby 2015年

专门使用Python还是使用任何工具/语言?
kenorb 2015年

如果您使用的是python,则最好将整体转储到一个数组中,其中每一行都是其自己的元素。然后,您遍历数组,找到XXXXXXXX,找到后使用该项目的索引-1和-2来获得行。
LPChip 2015年

嗨,男人,谢谢你的建议,我已经用for循环了,但是想知道如何使用正则表达式
takobaba 2015年

Answers:


15

以下RegEx XXXXXXXX在行之前测试可变数量的行,并在第一个捕获组中返回它们。

((.*\n){2})XXXXXXXX

  1. (.*\n)测试以\n换行符结尾的字符串。
  2. {2} 将此量化两次。
  3. () 这样一来,可以确保所有行都位于一个捕获组中。
  4. XXXXXXXX 是文本结尾的字符串。

现在,在Python中,您可以p.match(regex)[0]用来返回第一个捕获组。


4
请注意,这可能会在Windows上引起问题。如果可以,请尝试\r\n代替\n
Qix-蒙尼卡(Monica)错误

1
当然,这只会匹配行开始XXXXXXXX(但并不一定与结束XXXXXXXX)。
G-Man说

0

在erikgaal的答案中,请在xxxxxx之前使用一个额外的。*,以匹配所有制表符/空格。

((。* \ n){2})。* xxxxxxx


1
好吧,.*不会匹配制表符/空格;它将匹配任何内容(例如“快速棕色XXXXXXX”)。
G-Man
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.