• 使用正则表达式做代码匹配和替换


    转载请注明:

    仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/

    这篇博客主要在于记录一些不常见的有用的细节,对于网上随处可见的正则规则表,以及有限状态机这类基本概念,不在这篇博客的考虑范围之内。

    正则搜索:

    以下搜索和替换基于VSCode

    在正则搜索模式下,我们可以使用$+数字的方式获取搜索匹配到的元组,从而方便的进行代码的替换修改

    i.e

    # coding=utf8
    import numpy as np
    import matplotlib.pyplot as plt
    import random
    
    np.random.seed(19680801)
    num = 10
    x = sorted(np.random.rand(num))
    y = sorted(np.random.rand(num))
    
    x1, x2 = x[:num/2], x[num/2:] # 我们希望对这两行做shuffle
    y1, y2 = y[:num/2], y[num/2:] # 我们希望对这两行做shuffle

    那么我们可以通过正则匹配在vsCode中完成

     查找所用正则
    (x|y)[.*?]

    . 代表任意字符,这用于匹配中括号中的项目,?用于防止贪婪匹配,即匹配到仅一组时匹配就停止,否则会匹配如下所示的一整句

    x[:num/2], x[num/2:]

    替换所用正则
    random.shuffle($0) 

    $0 代表查找到的所有匹配项

    1. 本查找中,由于仅仅使用了一个括号,因此只有一个元组,所有还可以使用 $1 来代表 (x|y),由于没有更多的元组,$ + 更大的数字不能匹配,因此只能替换为 $ + 数字

    2. 同理,如果我们在中括号匹配的部分加上括号,则产生了第二个元组,此时 $2 用于代表中括号 ([.*?]) 匹配到的部分,如下所示:

    (x|y)([.*?])

    3. 如果我们确实需要输出 $ + 数字,但是 $ + 数字又会代表某个元组匹配到的对象,此时正确的方法是将 $ 写两遍,例如

    $1 指代元组的情况下,$$1 输出为 $1 ,反之为 $$1

  • 相关阅读:
    Apache Spark探秘:利用Intellij IDEA构建开发环境
    Scala 安装
    Mac OS Git 安装
    Druid:一个用于大数据实时处理的开源分布式系统
    批量kill Linux环境下的任务
    Xshell如何设置,当连接断开时保留Session,保留原文字
    Superset
    mac连接Windows远程桌面
    IOS应用开发版本控制工具之Versions使用
    “不擅长编码?”-可视化编程插件来解决
  • 原文地址:https://www.cnblogs.com/luruiyuan/p/7804983.html
Copyright © 2020-2023  润新知