notepad++配合正则表达式分组模式处理文本转化为sql语句

news2024/12/27 13:27:31

一、正则分组知识点补充

正则分组和捕获

():用于分组和捕获子表达式。

大白话就是()匹配到的数据,通过美元符号加下标可以获取该数据,例如$1、$2, 下标从1开始。

下面的案例就采用该模式处理文本数据

二、使用正则的需求背景

有一份报表的数据,需要把数据入库到mysql数据库, 因为数据很多,不可能手动一个一个转,这里采用正则表达式,巧妙的转化为对应的sql;

报表数据如下:

转换为sql格式如下:

update menu set content_value = "[{\"label\":\"年订阅\",\"value\":1},{\"label\":\"月订阅\",\"value\":2}]" where id = 17;

因为id这一列在sql会作为where参数,这里调整下位置,放到后面一列

里面的数据包含双引号,sql语句特殊处理,需要采用正则表达式做字符串转义。

复制excel表格的文本到notepad++,数据如下:

[{"label":"苹果","value":1},{"label":"西瓜","value":2}]		17
[{"label":"苹果","value":1},{"label":"西瓜","value":2}]		19
[{"label":"苹果","value":1},{"label":"西瓜","value":2}]		21
[{"label":"没吃过","value":1},{"label":"已经吃过了","value":2}]		22
[{"label":"空","value":""},{"label":"免费","value":"免费"},{"label":"收费","value":"收费"}]		28
[{"label":"空","value":""},{"label":"免费","value":"免费"},{"label":"收费","value":"收费"}]		30
[{"label":"空","value":""},{"label":"免费","value":"免费"},{"label":"收费","value":"收费"}]		32
[{"label":"空","value":""},{"label":"免费","value":"免费"},{"label":"收费","value":"收费"}]		34
[{"label":"模式1","value":0},{"label":"模式2","value":1},{"label":"模式3","value":2}]		67
[{"label":"模式1","value":0},{"label":"模式2","value":1},{"label":"模式3","value":2}]		68
[{"label":"打开","value":true},{"label":"关闭","value":false}]		69
[{"label":"打开","value":true},{"label":"关闭","value":false}]		72

三、正则分组模式处理文本实践

3.1、字符串特殊符号转义

查找目标:"

替换为:\\\"

先标记

替换

双引号已接上反斜杠, 效果如下:

[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]		17
[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]		19
[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]		21
[{\"label\":\"没吃过\",\"value\":1},{\"label\":\"已经吃过了\",\"value\":2}]		22
[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		28
[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		30
[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		32
[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		34
[{\"label\":\"模式1\",\"value\":0},{\"label\":\"模式2\",\"value\":1},{\"label\":\"模式3\",\"value\":2}]		67
[{\"label\":\"模式1\",\"value\":0},{\"label\":\"模式2\",\"value\":1},{\"label\":\"模式3\",\"value\":2}]		68
[{\"label\":\"打开\",\"value\":true},{\"label\":\"关闭\",\"value\":false}]		69
[{\"label\":\"打开\",\"value\":true},{\"label\":\"关闭\",\"value\":false}]		72
3.2、组装sql,拼接前缀

查找目标:(\[\{)

替换为:update menu set content_value = "$1

已拼接上前缀,效果如下:

update menu set content_value = "[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]		17
update menu set content_value = "[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]		19
update menu set content_value = "[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]		21
update menu set content_value = "[{\"label\":\"没吃过\",\"value\":1},{\"label\":\"已经吃过了\",\"value\":2}]		22
update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		28
update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		30
update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		32
update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]		34
update menu set content_value = "[{\"label\":\"模式1\",\"value\":0},{\"label\":\"模式2\",\"value\":1},{\"label\":\"模式3\",\"value\":2}]		67
update menu set content_value = "[{\"label\":\"模式1\",\"value\":0},{\"label\":\"模式2\",\"value\":1},{\"label\":\"模式3\",\"value\":2}]		68
update menu set content_value = "[{\"label\":\"打开\",\"value\":true},{\"label\":\"关闭\",\"value\":false}]		69
update menu set content_value = "[{\"label\":\"打开\",\"value\":true},{\"label\":\"关闭\",\"value\":false}]		72
3.3、拼接sql的后半截,并换行

查找目标:(\}\])\s{2}(\d{2})

替换为:$1\" where id = $2;\r

效果如下:

update menu set content_value = "[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]" where id = 17;

update menu set content_value = "[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]" where id = 19;

update menu set content_value = "[{\"label\":\"苹果\",\"value\":1},{\"label\":\"西瓜\",\"value\":2}]" where id = 21;

update menu set content_value = "[{\"label\":\"没吃过\",\"value\":1},{\"label\":\"已经吃过了\",\"value\":2}]" where id = 22;

update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]" where id = 28;

update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]" where id = 30;

update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]" where id = 32;

update menu set content_value = "[{\"label\":\"空\",\"value\":\"\"},{\"label\":\"免费\",\"value\":\"免费\"},{\"label\":\"收费\",\"value\":\"收费\"}]" where id = 34;

update menu set content_value = "[{\"label\":\"模式1\",\"value\":0},{\"label\":\"模式2\",\"value\":1},{\"label\":\"模式3\",\"value\":2}]" where id = 67;

update menu set content_value = "[{\"label\":\"模式1\",\"value\":0},{\"label\":\"模式2\",\"value\":1},{\"label\":\"模式3\",\"value\":2}]" where id = 68;

update menu set content_value = "[{\"label\":\"打开\",\"value\":true},{\"label\":\"关闭\",\"value\":false}]" where id = 69;

update menu set content_value = "[{\"label\":\"打开\",\"value\":true},{\"label\":\"关闭\",\"value\":false}]" where id = 72;
3.4、最终数据展示效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Verilog:$readmemb和$readmemh系统函数的使用与其中的初始化地址相关问题(详细细节)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 $readmemb和$readmemh两个系统函数用于将文件中的数据加载到存储器或者被称为数组的memory中。首先给出他们的语法的BNF范式,有关BNF范式的内容可以在…

GaussDB技术解读系列:性能调优

近日,在第14届中国数据库技术大会(DTCC2023)的GaussDB“五高两易”核心技术,给世界一个更优选择专场,华为数据库技术专家李士福详细解读了GaussDB性能调优的相关技术和应用实践。 本篇为大家分享GaussDB性能调优的实践…

【MySQL 45讲笔记】

文章目录 第一讲:一条SQL查询语句是如何执行的?第二讲:一条SQL更新语句是如何执行的?第三讲:事务隔离,为什么你改了我还看不见第四讲:深入浅出索引(上)第五讲&#xff1a…

Python函数绘图与高等代数互溶实例(二): 闪点函数

Python函数绘图与高等代数互溶实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互溶实例(二):闪点函数 Python函数绘图与高等代数互溶实例(二):设置X|Y轴|网格线 一: 函数plot(),展示变量的变化趋势 import numpy as np import matplotlib.pyplot as plt from pylab i…

商家收款一万手续费多少

目前微信和支付宝作为主流的支付平台,为商家提供了安全、便捷的支付解决方案。但是在正常情况下,商家需要向平台支付交易额0.6%至1%不等的手续费,这个费率看似很少,但长期积累下来的手续费支出也是一笔不小的开支。 什么是收款手…

复习Day01:数组part01:701. 二分查找、35. 搜索插入位置、367. 有效的完全平方数、69. x的平方根、74. 搜索二维矩阵

之前的blog链接:https://blog.csdn.net/weixin_43303286/article/details/131690654?spm1001.2014.3001.5501 我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Lab…

UI设计和平面设计的区别是什么?看完这篇一次搞懂

很多想要从事视觉领域工作的新手设计师,搞不懂UI设计和平面设计的区别;也有很多平面设计师工作后想转UI,却不知道该如何进行,导致择业和职业发展受阻,其实核心问题还是因为没有弄清楚UI设计和平面设计的区别是什么。 …

电工-三极管主要参数(直流、交流、极限)

三极管主要参数(直流、交流、极限) 三极管的主要参数分为三种,即直流参数、交流参数和极限参数,下面分别介绍: 直流参数 共发射极直流放大倍数βIc/Ib 集电极—基极反向截止电流Icbo,Ic0时,…

浅谈终端安全接入

前言: 随着网络的发展,现代企业大多都会部署企业的有线网络与无线网络,在传统的企业网内,随着越来越多的终端设备接入到公司网络,管理人员控制和审计外部用户接入的企业办公网的难度和工作量也越来越大。而如果允许外…

代码随想录二刷Day 15

102. Binary Tree Level Order Traversal vector<int>() it is basically constructor of std::vector class and will create a new empty vector. You can also mention the size of required vector in brackets. 访问二维vector的元素: 如果指定外层和内层向量的大…

技术贴 | 深度解析 PostgreSQL Protocol v3.0(二)— 扩展查询

引言 PostgreSQL 使用基于消息的协议在前端&#xff08;客户端&#xff09;和后端&#xff08;服务器&#xff09;之间进行通信。该协议通过 TCP/IP 和 Unix 域套接字支持。 《深度解析 PostgreSQL Protocol v3.0》系列技术贴&#xff0c;将带大家深度了解 PostgreSQL Protoc…

Matter 是什么?

Matter&#xff08;物联网Matter&#xff09;旨在成为一个可互操作的标准&#xff0c;促进技术采用和创新&#xff0c;逐渐取代智能家居生态系统的专有协议。 Matter采用一个开源的软件开发工具包&#xff08;SDK&#xff09;&#xff0c;其中包含了协议规范的实现&#xff0c…

如何低成本、低门槛开发全屋智能系统?

近期&#xff0c;某个科技通讯巨头豪掷 15 亿重金&#xff0c;准备成立房地产公司以大力推动全屋智能的发展。从大部分科技公司频频押注全屋智能领域来看&#xff0c;全屋智能已然成为智能家居第一大发展趋势&#xff0c;是资本市场的重头戏。 但全屋智能并不好做&#xff0c;…

【Linux】详解线程第一篇——由单线程到多线程的转变

线程详解 前言正式开始啥是线程理解线程Windows和Linux下的线程Windows下的线程Linux下的线程对比 重新理解进程理解曾经写的代码 Linux的线程pthread库验证多线程在同一个进程中跑ps -aL线程资源线程切换成本低线程缺点线程异常线程等待pthread_create的第三个参数——回调函数…

MyBatis友人帐之ResultMap及分页

一、ResultMap 1.1查询为null问题 要解决的问题&#xff1a;属性名和字段名不一致 解决方案 方案一&#xff1a;为列名指定别名 , 别名和java实体类的属性名一致 . <select id"selectUserById" resultType"User">select id , name , pwd as passwor…

thinkphp8路由

thinkphp8已出来有好一段时间了。这些天闲来无事&#xff0c;研究了下tp8的路由。默认情况下&#xff0c;tp8的路由是在route\app.php的文件里。但在实际工作中&#xff0c;我们并不会这样子去写路由。因为这样不好管理。更多的&#xff0c;是通过应用级别去管理路由。假如项目…

【JDK 8-函数式编程】4.4 Supplier

一、Supplier 接口 二、实战 Stage 1: 创建 Student 类 Stage 2: 创建方法 Stage 3: 调用方法 Stage 4: 执行结果 一、Supplier 接口 供给型 接口: 无入参&#xff0c;有返回值&#xff08;T : 出参类型&#xff09; 调用方法: T get(); 用途: 如 无参的工厂方法&#x…

多频超声波清洗机有什么特点?使用需要注意什么?

多频超声波清洗机是指具备多个频率可调的超声波发生器的清洗机&#xff0c;是在一只清洗槽内&#xff0c;安装有两种或三种以上不同频率的超声波换能器&#xff0c;由多只发生器分别推动各自频率的超声波进行清洗。传统的超声波清洗机通常只能在固定的频率下工作&#xff0c;而…

口袋参谋:新品上架如何做市场调查?这个方法超实用

很多商家在新品上架之前&#xff0c;都会对宝贝的市场行情进行调查分析&#xff0c;只有了解指定关键词下的行业市场数据&#xff0c;了解消费者需求,才能针对性的进行卖货。 可是我们要是人工一点点去搜集&#xff0c;一点点去翻找&#xff0c;很多数据是没法进行人工去统计的…

JavaScript - canvas - 选择部分区域的图像数据

效果 示例 项目结构&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>选择部分区域的图像数据</title><style type"text/css">div {width: 200px;height: 200px;di…