如何使用正则表达式捕获文本中的特定行块?

How to capture specific blocks of lines in text with regex?

我正在使用带有正则表达式的 Notepad++ 查找和替换工具。

我正在处理的文本片段如下所示:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec dignissim neque. Maecenas condimentum tellus at mauris dictum, nec accumsan augue lacinia. Phasellus condimentum erat ante, a cursus tortor ultricies eu. Curabitur auctor sem ac dignissim interdum.

Me --- Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Her --- Curabitur suscipit arcu justo, et scelerisque nunc commodo ac.

Me --- Nunc luctus, ligula vel porta convallis, augue mauris lobortis quam, ut volutpat sapien felis a erat.

Her --- Sed id pellentesque risus.    

Curabitur vehicula vitae est vel tempus. In quam augue, condimentum et mauris pellentesque, dignissim tempor libero. Morbi placerat posuere velit nec varius. Praesent vitae quam egestas, ultrices tortor sit amet, porttitor mauris. Etiam hendrerit vitae ante vitae posuere. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

我希望能够捕获从 "Me --- Lorem ipsum..." 开始一直到“...pellentesque risus”的文本。这样我就可以在上面放一个 LaTeX 格式,这将导致:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec dignissim neque. Maecenas condimentum tellus at mauris dictum, nec accumsan augue lacinia. Phasellus condimentum erat ante, a cursus tortor ultricies eu. Curabitur auctor sem ac dignissim interdum.

\begin{fancyquote}
Me --- Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Her --- Curabitur suscipit arcu justo, et scelerisque nunc commodo ac.

Me --- Nunc luctus, ligula vel porta convallis, augue mauris lobortis quam, ut volutpat sapien felis a erat.

Her --- Sed id pellentesque risus.    
\end{fancyquote} 

Curabitur vehicula vitae est vel tempus. In quam augue, condimentum et mauris pellentesque, dignissim tempor libero. Morbi placerat posuere velit nec varius. Praesent vitae quam egestas, ultrices tortor sit amet, porttitor mauris. Etiam hendrerit vitae ante vitae posuere. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

事实是,文本块可以以 "Me ---" 或 "Her ---" 开头,也可以以任何一种方式结束。

到目前为止,我有 (\nMe ---|Her ---),它可以使用任一选项正确启动分组,但我无法尝试使用正则表达式终止选择。我想说的是,类似于匹配任何内容(包括换行符),除非您看到换行符然后 NOT ("Her ---" OR "Me ---").

提前致谢。

您可以尝试以下方法:

查找内容:

((?:^(?:Me|Her) ---.*\s+)+)

替换为:

\begin{fancyquote}\n\end{fancyquote}\n\n

结果:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec dignissim neque. Maecenas condimentum tellus at mauris dictum, nec accumsan augue lacinia. Phasellus condimentum erat ante, a cursus tortor ultricies eu. Curabitur auctor sem ac dignissim interdum.

\begin{fancyquote}
Me --- Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Her --- Curabitur suscipit arcu justo, et scelerisque nunc commodo ac.

Me --- Nunc luctus, ligula vel porta convallis, augue mauris lobortis quam, ut volutpat sapien felis a erat.

Her --- Sed id pellentesque risus.    

\end{fancyquote}

Curabitur vehicula vitae est vel tempus. In quam augue, condimentum et mauris pellentesque, dignissim tempor libero. Morbi placerat posuere velit nec varius. Praesent vitae quam egestas, ultrices tortor sit amet, porttitor mauris. Etiam hendrerit vitae ante vitae posuere. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.