记事本++正则表达式搜索字符串和上一行中的其他字符串

notepad++ regex search string and other string in previous line

我正在寻找正则表达式模式,只有当另一个字符串在前几行中匹配时,它才会搜索字符串, 例如

abc----1
pqr----2
123----3
xyz----4
lll----5
pqr----6
123----7
qqq----8

所以这里说我只想找到 123,前提是我们先找到 xyz 而不是 abc。所以 outout 应该只是匹配模式是第 7 行而不是第 3 行。 谢谢蒂姆的回答, 另一个附加条件是我只想替换 123 不是此模式找到的所有行

您可以尝试搜索以下模式:

xyz((?!abc).)*?123

这匹配 xyz,然后 而不是 后跟 abc,然后在文本后面遇到 123 之前的任何地方。你应该 运行 上面的模式在全点模式下,这样 .* 可以跨行匹配。

Demo

编辑:

用其他内容替换 123,例如456,您可以捕获导致123 的所有内容,然后替换捕获的数量后跟新文本:

Find:    (xyz(?:(?!abc).)*?)123
Replace: 56

Demo