首页 > 其他分享 >【数字IC】——GVIM正则表达式

【数字IC】——GVIM正则表达式

时间:2024-07-23 14:29:13浏览次数:17  
标签:字符 匹配 删除 正则表达式 GVIM 等同于 IC 任意

1、正则表达式概述

正则表达式(Regular Expression,regex/regexp)是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的,用于描述要匹配的文本模式。

GVIMTCL中都会使用到正则表达式,其中TCL中的使用方法已在之前介绍过,大家可以参考我这篇博客【数字IC-TCL语言2

正则表达式功能很强大,可以完成很多难以想象的操作!

2、正则表达式的语法

命令语法格式
搜索/正则表达式
替换:s/正则表达式/替换字符串/选项
  • 元字符
.匹配任意一个字符
[abc]

匹配方括号中的任意一个字符,可用-表示字符范围

如[a-z]匹配小写字母

[^abc]匹配方括号中字符之外的任意字符
\d匹配阿拉伯数字,等同于[0-9]
\D匹配阿拉伯数字之外的任意字符,等同于[^0-9]
\x匹配十六进制数字,等同于[0-9A-Fa-f]
\X匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
\w匹配单词字母,等同于[0-9A-Za-z_]

\W

匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\t匹配<TAB>字符
\s匹配空白字符,等同于[ \t]
\S匹配非空白字符,等同于[^ \t]
  • 表示数量的元字符
*匹配0个-任意个
\+匹配1个-任意个
\?匹配0个-1个
\{n,m}

匹配n-m个

\{n}匹配n个
\{n,}匹配n个-任意个
\{,m}匹配0-m个
  • 特殊字符(反斜杠 \ 代表转译
\*匹配 * 字符
\.匹配 . 字符
\/匹配 / 字符
\\匹配 \ 字符
\[匹配 [ 字符
  •  表示位置的符号
$匹配行尾
^匹配行首
\<匹配单词词首
\>匹配单词词尾

 3、正则表达式的实例

3.1 替换操作

  • 在全局范围内把所有love或者Love都改成LOVE
:%s/[Ll]ove/LOVE/g
  •  使用单个空格替换一个或者多个空格
:%s/ \+/ /g

3.2 删除操作 

  • 删除所有的空行(空行中只有一个回车符

其中d是delete的意思

:g/^$/d
  • 删除含有某些字符的行
:g/help/d

语法格式补充

:[range]global/[pattern]/[command]

global命令在[range]指定的文本范围内(若未指定range则为全局搜索)查找[pattern],然后对匹配到的执行命令[command]。

如果对未匹配上的执行命令,则使用global!或vglobal。

  • 删除每行的所有前导空格
:%s/^ *//g
  •  删除以数字开头的行
:%s/^\d.*$//g
  •  删除以[a,b,c]开头的行,|是或运算符
:%s/^[a|b|c].*$//g
  • 删除重复行

将两行重复行压缩成一行 :%s /^\(.*\)\n\1$ /\1 /g

将多行重复行压缩成一行 :%s /^\(.*\)\(\n\1\)\+$ /\1 /g

补充:正则表达式中第一个括号中的内容可以用 \1 表示,第二个括号中的内容可以用 \2 表示,以此类推。我下面针对压缩重复行做详细的解释。

将多行重复行压缩成一行

 3.3 插入操作

  • 在文件中的每一行的开始插入>
:%s/^/>/g
  • 在文件中的每一行的结尾插入。
:%s/$/。/g

3.4 其他应用实例

  • 交换列表中所有连字符分隔的条目的顺序
:%s/\(.*\):\(.*\)/\2:\1/g
  • 将func(a,b,c)的实例改为func(b,a,c)
:%s/func(\([^,]*\),\([^,]*\),\([^,]*\))/func(\2,\1,\3)/g
  • 将行首的id替换为行号
:%s/\<id\>/\=line( "." )

标签:字符,匹配,删除,正则表达式,GVIM,等同于,IC,任意
From: https://blog.csdn.net/lbyNO_1/article/details/140626397

相关文章

  • 数字IC——TCL语言1
    一、TCL概述TCL语言的使用范围启动TCL的方法linux系统下$tclsh%%%exit TCL语法置换:把命令分成独立的单词,同时进行必要的置换变量置换$:TCL解释器认为$后面是变量名,将变量置换成它的值。%setA"ILoveTCL"ILoveTCL%puts$AILoveTCL命令置换[]:[]内是一......
  • 封装 static静态关键字 可变参数 递归
    一.封装1.this1.当成员变量和局部变量重名时,调用遵循"就近原则",先调用局部的2.this代表的是当前对象,哪个对象调用this所在的方法,this就代表哪个对象3.作用:区分重名的成员变量和局部变量(this后面肯定是成员的)publicclassPerson{Stringname;/**......
  • swift 混编OC 使用OC NSDictionary
     OC属性@property(nonatomic,strong)NSDictionary*_NullableextraData; swift使用打印Dictionary<AnyHashable,Any>(lldb)poextraData▿Optional<Dictionary<AnyHashable,Any>>▿some:2elements▿0:2elements▿key:An......
  • 深入解析 @SpringBootApplication 注解及其源码
    深入解析@SpringBootApplication注解及其源码在SpringBoot开发中,@SpringBootApplication注解几乎是每个项目的起点。它不仅简化了配置,还集成了多个核心注解。今天,我们将深入探讨这个注解的内部机制,并通过代码示例来展示其强大功能。1.@SpringBootApplication是什么?简单......
  • POLIR-Dialectics-lumination VS Abyss-Nietzsche's "Abyss and Mental Projection" a
    Nietzschesaid:Whenyoulookintoanabyss,theabysslookintoyou.Actually,thereisacombinationof"psychologicalprojection"and"infiniteloopofconflict"?KeyPoint:0.The"StatueofLiberty"luminatingtheworld......
  • 在K8S中,k8s中service访问有问题,该如何排查?
    在Kubernetes(K8S)中,如果Service访问出现问题,通常可以按照以下步骤进行详细的排查:1.检查Service的状态和配置操作:使用kubectldescribeservice<service-name>命令查看Service的详细描述,确保Service的类型(如ClusterIP,NodePort,LoadBalancer等)和端口映射(如port,targetPort,......
  • 在K8S中,Service的Nodeport端口范围?
    在Kubernetes中,NodePort是一种服务(Service)类型,它允许从集群外部访问服务。当创建一个NodePort类型的服务时,Kubernetes会在每个节点上打开一个静态端口(称为NodePort),所有发往该端口的流量都会被转发到服务后端的Pod。默认情况下,Kubernetes为NodePort服务分配的端口范围是从30000......
  • pymobiledevice3:如果没有抽象方法“_create_service_connection”的实现,则无法实例化
    全面披露:我不知道我在做什么。我没有编程经验。我已要求ChatGPT为我创建一个程序。ChatGPT为我创建的文件之一名为“device_detection.py”。这个特定文件应该检测通过USB端口连接到我的笔记本电脑的智能手机设备,然后在终端中打印结果。如果这就是我所需要的,那就太好了(并且......
  • 如何调试 python Flask [84] [CRITICAL] WORKER TIMEOUT?
    调试:gtts.tts:保存到temp.mp37月22日09:10:56PM[2024-07-2215:40:56+0000][84][严重]工作超时(pid:87)|||7月22日09:10:56PM[2024-07-2215:40:56+0000][87][INFO]工人退出(pid:87)7月22日09:10:57PM[2024-07-2215:40:57+0000][95][INF......
  • 自编译制作docker版本的onlyoffice镜像
    笔记记录自编译制作docker版本的onlyoffice镜像一、环境:1、win11安装Ubuntu20.04.6.LTS2、需要开代理文件参考:https://helpcenter.onlyoffice.com/installation/docs-community-compile.aspx二、准备1、sudoapt-getupdate2、sudoapt-getinstall-ygitpythonopenssh-......