zoukankan      html  css  js  c++  java
  • 在 Notepad++ 或 EditPlus 中使用正则表达式进行高级查找替换

    转自:http://www.cnblogs.com/suding1188/archive/2012/03/12/2392021.html

    在工作中适当地使用一些技巧,总可以让我们提高效率和准确率。
    在 Notepad++ 中使用正则表达式进行高级查找替换,对于一些批量性质的工作是很有帮助的。我们来看下面一个例子:

    这是在剑南春项目中遇到的一个实际问题。要求是在数据库 MISC_SERIAL_QUEUE 表中写入一大批模拟序列号数据,大致为这样的形式:

    • 01234567890000000001
    • 01234567890000000002
    • 01234567890000000003
    • ……

    当然,该表还有一些其他字段,比如“生成日期”等,也需要写入值。

    另外有一个潜在的要求,就是该数据写入过程应该是可重复的,且每次重复操作都应该很简单快捷。

    基于以上要求,我们考虑最好能快速生成一大批 INSERT 语句。把这些 INSERT 语句保存在文件中,以便随时拿来执行。下文就是实际操作的步骤。

    使用 Excel 批量生成序列号

    先使用 Excel 制作一张表格,有 A、B、C 三列,分别代表:主键ID、流水线、序列号。

    1. 主键ID A2 和 A3 单元格填 1、2 ,选中这两个单元格,然后用鼠标往下拉多行,形成 1、2、3、4 ……。
    2. 流水线 B2 和 B3 单元格填 A、B ,选中这两个单元格,双击选中区域的右下角那个小点,自动在 B 列形成 A、B、A、B、A、B ……。
    3. 序列号 在 C2 单元格写一个公式 =TEXT(A2, "01234567890000000000") ,完成后就会看到 01234567890000000001 。
    4. 选中 C2 单元格,双击选中区域的右下角那个小点,自动在 C 列形成各个序列号。
    5. 另存为 CSV (逗号分隔) 格式的文件,比如 a.csv。CSV 就是 Comma Separated Version 的意思。这个文件的内容大致是这样:
      1,A,01234567890000000001
      2,B,01234567890000000002
      3,A,01234567890000000003
      4,B,01234567890000000004
      5,A,01234567890000000005
      6,B,01234567890000000006
      7,A,01234567890000000007
      8,B,01234567890000000008
      9,A,01234567890000000009
      10,B,01234567890000000010
      

    使用 Notepad++ 或 EditPlus 进行批量替换,生成 INSERT 语句

    然后使用 Notepad++ 或 EditPlus 打开这个 a.csv 文件。

    1. 使用正则表达式查找(注意查找模式一定要选择“正则表达式”):
      (.*),(.*),(.*)
      
    2. 替换成:
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (\1, '\2', '\3', SYSDATE);
      
    3. 这样就得到了最终要的结果:
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (1, 'A', '01234567890000000001', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (2, 'B', '01234567890000000002', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (3, 'A', '01234567890000000003', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (4, 'B', '01234567890000000004', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (5, 'A', '01234567890000000005', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (6, 'B', '01234567890000000006', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (7, 'A', '01234567890000000007', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (8, 'B', '01234567890000000008', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (9, 'A', '01234567890000000009', SYSDATE);
      Insert into MISC_SERIAL_QUEUE (SQ_ID, SQ_PRODUCT_LINE, SQ_SN, SQ_DATETIME) Values (10, 'B', '01234567890000000010', SYSDATE);
      

    解释:

    • .* 表示任意长度的字符串
    • () 一对圆括号表示把括号中的内容作为一个参数(该参数可以用于替换)
    • \1 \2 \3 分别表示第 1 、第 2 、第 3 对圆括号中包含的内容(也就是第 1 、第 2 、第 3 个参数)

    这样就拿到了一批 SQL 语句。到数据库管理工具中去执行这些 SQL 就可以了。最后,不要忘记写上 COMMIT 语句。

  • 相关阅读:
    python练习六十二:文件处理,往文件中所有添加指定的前缀
    python练习六十一:文件处理,读取文件内容
    使用广度优先搜素查找路径
    不同路径 II
    使用深度优先搜索查找路径
    不同路径
    深度优先搜索
    旋转链表
    java 迭代
    表示图的数据类型
  • 原文地址:https://www.cnblogs.com/wangjixianyun/p/2949260.html
Copyright © 2011-2022 走看看