轉載請注明:
仰望高端玩家的小清新 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
