【问题标题】:Replace specific block of text with an indented block of text用缩进的文本块替换特定的文本块
【发布时间】:2019-10-02 02:48:53
【问题描述】:

我正在使用 Atom 文本编辑器,尽管我很乐意切换到任何支持正则表达式查找和替换的程序。

我的目标是:

搜索包含单词的任何文本行

*group: 

代替
*page 
    *group: 

其中*group 的意思是在单词*page 之后带有一个制表符。然后,我需要直接在组下的所有内容也被“标记”在一个上。

一种可能性是在 Atom 中执行以下操作:

查找:\*group:(.*)

替换:*page\n\t\t*group:$1

但是,这是有问题的,因为它会产生如下块:

*page
    *group: GROUP1
    *question: TEXT QUESTIONS
        *shuffle
        ANSWER CHOICE 1
        ANSWER CHOICE 2
        *save: var_1
        *throwaway
    >> GROUP1_answer = "ANSWER CHOICE 1"

但我需要的是让“组”下的所有内容都像这样缩进

*page
    *group: GROUP1
        *question: TEXT QUESTIONS
            *shuffle
            ANSWER CHOICE 1
            ANSWER CHOICE 2
            *save: var_1
            *throwaway
        >> GROUP1_answer = "ANSWER CHOICE 1"

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: regex atom-editor


    【解决方案1】:

    您可以使用 Notepad++ 分两步完成。

    1- 在*group 之前添加*page

    2- 在不是以*page 开头的每一行之前添加一个制表符(使用正则表达式的负前瞻)

    第 1 步:

    • 在记事本++中按CTRL + H

    • 在字段Find what: 中输入此模式:(\*group:(((?!\*group).)*))

    • 在字段Replace with: 中输入此模式:*page\n$1

    • Alt + A

    现在您在每个 *group 之前添加 *page

    结果:

    *page
    *group: GROUP1
        *question: TEXT QUESTIONS
            *shuffle
            ANSWER CHOICE 1
            ANSWER CHOICE 2
            *save: var_1
            *throwaway
        >> GROUP1_answer = "ANSWER CHOICE 1"
    *page
    *group: GROUP1
        *question: TEXT QUESTIONS
            *shuffle
            ANSWER CHOICE 1
            ANSWER CHOICE 2
            *save: var_1
            *throwaway
        >> GROUP1_answer = "ANSWER CHOICE 1"
    

    第 2 步:

    • 在 Notepad++ 中再次按 CTRL + H

    • 在字段Find what: 中输入此模式:(^((?!\*page.*$).*))

    • 在字段Replace with: 中输入此模式:\t$1

    • Alt + A

    结果:

    *page
        *group: GROUP1
            *question: TEXT QUESTIONS
                *shuffle
                ANSWER CHOICE 1
                ANSWER CHOICE 2
                *save: var_1
                *throwaway
            >> GROUP1_answer = "ANSWER CHOICE 1"
    *page
        *group: GROUP1
            *question: TEXT QUESTIONS
                *shuffle
                ANSWER CHOICE 1
                ANSWER CHOICE 2
                *save: var_1
                *throwaway
            >> GROUP1_answer = "ANSWER CHOICE 1"
    

    这样,一个标签将添加到所有不以*page开头的行。

    只需确保未选中 matches newline 选项即可。

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 2021-08-29
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      相关资源
      最近更新 更多