代码之家  ›  专栏  ›  技术社区  ›  a_todd12

记事本中的高级查找和替换++

  •  0
  • a_todd12  · 技术社区  · 4 年前

    我第一次尝试使用Notepad++,想看看这里是否有人能为我提供一些解决方案。

    我有一个文件,看起来像这样:

    ex 1 
    send power g1 g2 g3 g4 
    ex 2 
    send power g1 g2 
    ex 3 
    send power g1 f5 f3
    ex 4 
    send f5 f2 t5
    

    …等等,在“发送”之后有各种单词组合。我只需要在每个“send”行后面加一行(“this is number `#'”),其中#与“ex#”数字匹配。。。因此它将每次增加1。结果是:

    ex 1 
    send power g1 g2 g3 g4
    this is number `1' 
    ex 2
    send power g1 g2 
    this is number `2'
    ex 3 
    send power g1 f5 f3
    this is number `3'
    ex 4 
    send f5 f2 t5
    this is number `4'
    

    如有任何建议,我们将不胜感激!

    2 回复  |  直到 4 年前
        1
  •  2
  •   chiliNUT    4 年前

    发现

    ex (\d+)\s+^.*$
    

    代替

    $0\r\nthis is number `$1`
    

    搜索ex后跟一个数字后跟一个或多个空格和/或换行符后跟下一行

    替换为:$0它找到的所有东西,一个换行符,这是数字,以及“ex”之后的数字

        2
  •  2
  •   CertainPerformance    4 年前

    捕获后面的数字 ex ,然后用换行符替换, this is number ,和数字。

    火柴

    ex (\d+) *\r?\n.+
    

    并替换为

    $0\nthis is number `$1`
    

    (\d+) 捕获数字。 $0 替换为整个匹配字符串。 $1 替换为第一个捕获组中的值(数字)。

        3
  •  2
  •   The fourth bird    4 年前

    在Notepad++中,您可以:

    查找内容:

    \bex\h+(\d+)\h*\R.*\K
    

    替换为:

    \r\nthis is number `$1`
    

    模式匹配:

    • \bex 单词边界,匹配单词 ex
    • \h+ 匹配1+个水平空白字符
    • (\d+) 俘虏 第1组 ,匹配1位以上数字
    • \h* 匹配可选的水平空白字符
    • \R 匹配任何unicode换行序列
    • .*\K 匹配整条线,忘记迄今为止匹配的内容

    Regex demo

    enter image description here

    推荐文章