regex 在Notepad++中替换数据时使用条件

wlzqhblo  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(127)

在Notepad++的文档中,我有这样的行:

dicha   NCFS000 dicha-n dicha   NCFS000 dicha   F   S
medida  NCFS000 medida-n    medida  NCFS000 medida  F   S

字符串
当下一行包含第一个字符串NCFS000时,我想用dicha VMP00SF decir-v dicha VMP00SF decir F S替换dicha NCFS000 dicha-n dicha NCFS000 dicha F S。它前面必须有一个字符串(在本例中为medida),但它可以是任何字符串。
查找这些行的查询如下所示:

dicha   NCFS000 dicha-n dicha   NCFS000 dicha   F   S\r\n(\w*)  NCFS000


此查询符合条件,因为:
1.第一行是dicha NCFS000 dicha-n dicha NCFS000 dicha F S
1.然后,存在第二线\r\n
1.第二行以任意字符串(\w*)(在我的示例中为medidad)开始
1.最后,有一个制表符和字符串NCFS000符合我的条件。
任何提示将不胜感激。

jgwigjjp

jgwigjjp1#

要匹配某个内容但不捕获它,请使用lookahead:

  • Ctrl+H
  • 查找:dicha NCFS000 dicha-n dicha NCFS000 dicha F S(?=\R.+?NCFS000)
  • 替换为:dicha VMP00SF decir-v dicha VMP00SF decir F S
    **TICK 匹配案例 *
    ***滴答 * 缠绕 *
    ***SELECT * 正则表达式 *
    *取消勾选. matches newline
  • 全部更换
    说明:
(?=             # positive lookahead, make sure we have after, but not capturing:
    \R              # any kind of linebreak (i.e. \r, \n, \r\n ...)
    .+?             # 1 or more any character but linebreak
    NCFS000         # literally
)               # end lookahead

字符串

前截图:


的数据

后截图:


相关问题