Notepad++的正则表达式分组匹配

作者: 好重 | 来源:发表于2019-07-10 19:10 被阅读11次

    日常经常使用notepad++进行文本处理,因为notepad++的文本查找和替换支持正则表达式,使用起来非常方便。查找的界面如下所示:

    notepad++的文本查找界面

    【查找目标】支持多种查找模式来查找文本文件,其中的正则表达式模式大大增强了文本查找的能力。进而我们可以用【替换为】输入框中的文本,去替换查找出来的文本。但如果我们在【替换为】输入框中想要使用【查找目标】中匹配到的字段,那该怎么做呢?

    我们可以使用正则表达式的分组能力,在【查找目标】中的正则表达式通过()来包围想要用的字符,然后在【替换为】输入框中用\1、\2、…来获取查找到的第一、第二、… 个分组。

    比如:

    Text body Search string Replace string Result
    Hi my name is Fred my name is (.+) my name is not \1 Hi my name is not Fred
    The quick brown fox jumped over the fat lazy dog brown (.+) jumped over the (.+) brown \2 jumped over the \1 The quick brown fat jumped over the fox lazy dog

    这是一种常见的场景,比如下面的需求,假设原始的文本文件是这样:

    iconUrl = in.readString();
    title = in.readString();
    subTitle = in.readString();
    description = in.readString();
    imageUrl = in.readString();
    imageJumpSceheme = in.readString();
    buttonText = in.readString();
    buttonJumpScheme = in.readString();
    

    针对每一行,我想把它换成this.xxx = xxx的形式,这里每一行的xxx都是不一样的,没法简单匹配替换,那么可以使用分组的方法:

    【查找目标】:(.*) = in.readString\(\);
    【替换为】:info.\1 = \1;

    结果如下:

    info.iconUrl = iconUrl;
    info.title = title;
    info.subTitle = subTitle;
    info.description = description;
    info.imageUrl = imageUrl;
    info.imageJumpSceheme = imageJumpSceheme;
    info.buttonText = buttonText;
    info.buttonJumpScheme = buttonJumpScheme;
    

    相关文章

      网友评论

        本文标题:Notepad++的正则表达式分组匹配

        本文链接:https://www.haomeiwen.com/subject/wljkkctx.html