-2

我们需要一个正则表达式来从我们正在搜索特定术语或短语的文本中选择句子。结果应该有搜索词的行以及前一行和后一行。这里的行定义可以是从空行开始到任何字符的任何内容。

例如,如果我们在以下文本中搜索术语“沉积”(不区分大小写):

12           xxxxxxxxxx.           )
13   ______________________________)
14
15
16
17
18             VIDEOTAPE DEPOSITION OF JOHN
19                    FRIDAY, OCTOBER 30, 2009
20
21
22
23
24   PAGES 1 - 92

这应该返回我以下结果:

17
18             VIDEOTAPE DEPOSITION OF JOHN
19                    FRIDAY, OCTOBER 30, 2009
4

2 回答 2

0

试试这个模式:

[^\r\n]*?(?:\r|\n|\r\n)[^\r\n]*?\bDEPOSITION\b[^\r\n]*?(?:\r|\n|\r\n)[^\r\n]*?(?:\r|\n|\r\n)

DEPOSITION每次都替换您要查找的单词。为了使搜索不区分大小写,您需要在您选择的正则表达式引擎中进行设置。

这是一个现场演示

于 2013-02-05T13:26:21.163 回答
0

如果您知道要搜索的内容,可以使用以下内容:

(\n^.+?DEPOSITION.+?$\n.+?\n)

如果您只想匹配所有组,可以将特定术语替换为 \S(非空格字符),如下所示:

(\n^.+?\S.+?$\n.+?\n)

在这两种情况下,确保您已关闭“点匹配换行符”非常重要。在上面,\n 是换行符,.+? 将匹配任何内容,直到下一个字符,^ 匹配行首,$ 匹配行尾。唯一的其他问题可能是一个正则表达式解释器,它有一个用于切换 ^ 和 $ 以匹配文件的开头和结尾而不是行的标志。这应该默认为关闭,但值得确保

于 2013-02-05T14:18:14.053 回答