zoukankan      html  css  js  c++  java
  • 使用正则表达式做代码匹配和替换

    转载请注明:

    仰望高端玩家的小清新 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

  • 相关阅读:
    RK 清理后台所有历史App任务
    RK onConfigurationChanged ConfigChanges 设备状态的改变
    RK audio 拨号同时输出Speaker和USB音频
    RK 微信视频通话预览倒立
    Unity 笔记
    C# 泛型约束为枚举
    Unity Editor 扩展PropertyDrawer (属性的 Inspector )
    Unity Editor 笔记
    Unity 反转法线,在 Hierarchy 视图对象的快捷菜单中增加 Flip Mesh Normals(反转网格法线)项
    Blender 2.9 骨骼
  • 原文地址:https://www.cnblogs.com/luruiyuan/p/7804983.html
Copyright © 2011-2022 走看看