正则匹配 | 正则实际应用探索分享

这并不是一篇教正则基础的文章,其正则式不能对您进行使用后的结果负责,请以研究的眼光看待本篇文章。

技术就是懒人为了更好的懒才会想办法搞的东西,我最近因为某些原因需要频繁删除注释

我就想到通过替换的正则功能快速删除文件中的简单注释

我开始想着只要匹配后面的内容,那么只需要更换前面的“头”就能适配其他语言了,然后写出了一个十分臃肿的正则匹配工式

JavaScript单行臃肿版

//(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*

HTML单行臃肿版

<!--(( )|\w|[`!@#$%^&<>*?/*+-;'""“”;:|()()]|\S)*

CSS单行臃肿版

/\*(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*

 Python单行臃肿版

#(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*

Java单行臃肿版

//(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*

正当我还高兴呢

直到PHP的时候发现多行注释了

<!--(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*

 这个正则公式对多行注释完全不管用,然后尝试以下的公式

<!--(( )|\n|\S|\w|[`!@#$%^&*?/*+-;'""“”;:|()()])*(^(-->)
$)

很显然也行不通

最终研究出了一个按逐符读写的模式来匹配内容的妥协方案的公式

PHP多行适配简洁版

<!--((.\s)|.)*-->

多行注释不能存在空行问题

虽然多行和单行注释全都能匹配到,但是多行注释不能存在空行,例如php注释:

第8行的空行会导致这个注释不能被识别到

在网上搜了很多资料并进行很多尝试,那些所谓的匹配空行的办法并不能真正解决这个问题,以目前正则研究的水平,我现在还真是拿它没办法了,只能先通过改变用户习惯,多行注释不打空行来保证一次删的干净。

jetbrain全家桶程序编辑器使用本文正则公式方法

先通过Ctrl+R来打开“替换”功能

一般默认不开启正则匹配的,所以要点亮正则图标

将公式粘进第一行,第二行为空,然后直接点击“全部替换”即可

多行适配简洁版(可以试一试)

按默认习惯做的,如果你的习惯不太一样则需要稍加修改

Javascript单多行通用

/\*((.\s)|.)*\*/

Python单行

#(.)*

Python双引号多行

"""\s((.\s)|.)*"""

 

Python单引号多行

'''\s((.\s)|.)*'''

 

HTML单多行通用

<!--((.\s)|.)*-->

总结

从晚上11点提出需求到本文写完已经是凌晨3点了,最后结局留有遗憾,本文仅作为研究性讨论文章,不具有技术指导意义。

在正则问题的研究中,通过实际问题,从最初的复杂公式,精简为精炼公式,从解决单行问题,到解决多行问题,在过程中加深了对正则的理解与认识,在今后的代码工作与学习中,正则的运用将提高编码效率和技术水平

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

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

相关文章

IP报文格式

IP报文格式 报文格式 图1 IP头格式 表1 IP头字段解释 字段长度含义Version4比特 4&#xff1a;表示为IPV4&#xff1b;6&#xff1a;表示为IPV6。IHL4比特首部长度&#xff0c;如果不带Option字段&#xff0c;则为20&#xff0c;最长为60&#xff0c;该值限制了记录路由选项。…

Java / Spring Boot + POI 给 Word 添加水印

1、前言(瞎扯) 有个需求&#xff1a;整一个给 Word 加水印的demo&#xff0c;于是我就网上找呗~ 看到那个 Aspose 好像是收费的&#xff0c;然后就把目光转向了 POI&#xff0c;看到各种形形色色的也不知道哪个能用。整了一会&#xff0c;自己拷贝出一个比较精简的能用的 demo …

SpringBoot activemq收发消息、配置及原理

SpringBoot集成消息处理框架 Spring framework提供了对JMS和AMQP消息框架的无缝集成&#xff0c;为Spring项目使用消息处理框架提供了极大的便利。 与Spring framework相比&#xff0c;Spring Boot更近了一步&#xff0c;通过auto-configuration机制实现了对jms及amqp主流框架…

JavaScript中onclick事件传递数组参数时接收的是[object,object],需要转为字符串传递

问题描述 在JavaScript中定义button的onclick点击事件&#xff0c;传递参数的时候&#xff0c;某个参数是数组&#xff0c;在方法体里面接收到的值是[object,object]。 一开始在网上找解决办法&#xff0c;使用JSON.stringify(arr)传递数组参数&#xff0c;还是不行&#xff…

Ubuntu20.04配置grub ,不必每次都输入 nomodeset

一、查看原来的grub配置&#xff1a; grep menuentry /boot/grub/grub.cfg 重点注意以下类似的核心版本号 gnulinux-5.15.0-92-generic-advanced-86a86651-8070-4338-92ee-8a1a13a98a05 gnulinux-5.15.0-67-generic-advanced-86a86651-8070-4338-92ee-8a1a13a98a05 …

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…

03-Redis缓存高可用集群

文章目录 1、Redis集群方案比较2、Redis高可用集群搭建redis集群搭建Java操作redis集群 4、Redis集群原理分析槽位定位算法跳转重定位Redis集群节点间的通信机制gossip通信的10000端口网络抖动 Redis集群选举原理分析集群脑裂数据丢失问题集群是否完整才能对外提供服务Redis集群…

LC 2846. 边权重均等查询

2846. 边权重均等查询 难度&#xff1a; 困难 题目大意&#xff1a; 现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 …

Android studio环境搭建过程异常

异常1 e: file:///D:/project/AndroidProject/settings.gradle.kts:5:21: Unexpected tokens (use ; to separate expressions on the same line) dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories { // …

6JS对象

对象简介 对象是JavaScript的基本数据类型。对象是一种复合值&#xff1a;它将很多值&#xff08;原始值或者其他对象&#xff09;聚合在一起&#xff0c;可通过名字访问这些值。对象也可看做是属性的无序集合&#xff0c;每个属性都是一个名/值对。属性名是字符串&#xff0c…

Java 基础 - Java抽象类的使用示例

引言 在面向对象编程中,抽象类是一种重要的概念,它提供了一种用于建模共性和规范子类的方式。本文将通过一个简单的Java示例来介绍抽象类的基本使用,以及抽象类与具体类的关系。 抽象类的定义 在示例中,我们定义了一个抽象类 Shape,它包含了一个抽象方法 calculateArea…

第16章_网络编程(网络通信要素,TCP与UDP协议,网络编程API,TCP网络编程,UDP网络编程,URL编程)

文章目录 第16章_网络编程本章专题与脉络1. 网络编程概述1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一&#xff1a;IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二&#xff1a;端口号2.4 通信要素三&#xff1a;网络通信协议…

BLIP-2: 基于冻结图像编码器和大型语言模型的语言-图像预训练引导

BLIP-2: 基于冻结图像编码器和大型语言模型的语言-图像预训练引导 项目地址BLIP-2的背景与意义BLIP-2的安装与演示BLIP-2模型库图像到文本生成示例特征提取示例图像-文本匹配示例性能评估与训练引用BLIP-2Hugging Face集成 在语言-图像预训练领域&#xff0c;BLIP-2的出现标志着…

提高多旋翼无人机的悬停控制精度

要提高多旋翼无人机的悬停控制精度&#xff0c;可以从以下几个方面进行优化&#xff1a; 优化传感器配置&#xff1a;选用高精度的传感器&#xff0c;如激光雷达、红外传感器等&#xff0c;可以提供更准确的姿态和位置信息。同时&#xff0c;对传感器进行定期标定和校准&#…

利用SPI,结合数据库连接池durid进行数据服务架构灵活设计

接着上一篇文章业务开始围绕原始凭证展开,而展开的基础无疑是围绕着科目展开的。首先我们业务层面以财政部的小企业会计准则的一级科目引入软件中。下面我们来考虑如何将科目切入软件更加灵活,方便业务扩展、维护与升级。 SPI是首先想到的数据服务方式 为什么会想到它呢?首…

深度学习分类问题之Logistic Regression

逻辑回归模型&#xff0c;虽然名字是回归&#xff0c;但是是解决分类问题。 在线性回归里面&#xff0c;我们根据有效信息&#xff0c;预测下一个由已知信息得到的数值&#xff0c;叫做回归问题&#xff0c;但是在机器学习里面&#xff0c;常见的是分类问题。最常见的就是MNIS…

React16源码: React中commitAllHostEffects内部的commitDeletion的源码实现

commitDeletion 1 &#xff09;概述 在 react commit 阶段的 commitRoot 第二个while循环中调用了 commitAllHostEffects&#xff0c;这个函数不仅仅处理了新增节点&#xff0c;更新节点最后一个操作&#xff0c;就是删除节点&#xff0c;就需要调用 commitDeletion&#xff0…

《动手学深度学习(PyTorch版)》笔记4.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过。…

掌握可视化大屏:提升数据分析和决策能力的关键(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

(大众金融)SQL server面试题(3)-客户已用额度总和

今天&#xff0c;面试了一家公司&#xff0c;什么也不说先来三道面试题做做&#xff0c;第三题。 那么&#xff0c;我们就开始做题吧&#xff0c;谁叫我们是打工人呢。 题目是这样的&#xff1a; DEALER_INFO经销商授信协议号码经销商名称经销商证件号注册地址员工人数信息维…