输入文件:
[keyword1]
text0
"text1" = "text2"
[text3 keyword1 text4]
[text5]
[keyword2 text6]
"text7" = "text8"
"text9"
"text10" = "text11"
[text12]
"text13" = "text14"
text15
如果每个“条目”的第一行都包含一个关键字,我希望将其完全匹配。我所说的“全部输入”是:第一行总是放在方括号中,而在它下面的行数很多,基本上直到我们敲到下一个[字符为止。
如果我事先知道每个“入口”会有多少行,例如,我知道该怎么做。对于下面的一行,我会做这样的事情:
^\[(.+)(keyword1|keyword2)(.+)\]\r\n(.+)\r\n
但是我不知道如何使用任意数量的行。我已经对NP ++的“。match newline”功能进行了一些实验,但是到目前为止,让我感到困惑的是表达式将贪婪地匹配整个文件。
帮助?
// edit:因此,根据上述示例,所需的输出将是(为清晰起见,保留原始行号):
[text5]
[text12]
"text13" = "text14"
text15
// edit#2:清除了示例输入/所需的输出,因此很明显它们不是字面上的意思。 Q已经被回答了:)
答案 0 :(得分:0)
此模式应涵盖您的所有基础:\n^.*[^][\n]+$
\n
删除该行之前的所有新行字符
^.*
旨在捕获“ x行:”部分
[^][\n]+$
匹配一个或多个不是换行符的字符,或者直到行尾为止都用方括号括住的字符。
答案 1 :(得分:0)
您可以使用以下模式(选中. matches newline
),然后不进行任何替换:
\[[^\]]*?(with keyword)[^\]]*?\][^\[]*
用括号|
分隔所有关键字,将其替换为括号。
基本搜索带有方括号的模式,并搜索直到在 括号内找到关键字,而不检查下一行。
由于选中了. matches newline
选项,因此在贪婪匹配时要特别小心。