平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“如何采用正则表达式保留部分内容的替换功能”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
采用正则表达式实现保留部分内容的替换
可惜没有如果,去替换时间对心的冷漠。
什么是真的念念不忘,不过就是旧情被替换了而已。
在这个场景下,而夜幕,却依旧如期降临,深冬的风替换曾经的烟花三月,举目四望,偌大的桌边只我一人,空对,一盏冰冷的茶。
理解这一步时,对于查找替换大家可能都不陌生,基本上所有的编辑器都有这样的功能。但是普通的查找替换肯定不能满足用户对于泛化查找的需求。于是有了基于正则表达式的查找替换。对于正则表达式的规则这里不再说明,如果不太清楚能够自行百度。
保留一处内容
大家能够看这样一个例子:如下所示图,如果我想将所有的"第n章"替换为"第n节",那么如何替换?直接将"章"替换为"节",为了避免其他的"章"被替换掉,通常情况下我们需一个一个进行替换。如何避免这种情况呢?

结合项目来看,我们能够将"第n章"替换为"第n节",但问题是n是变化的,所以替换时会用到正则表达式。比如正则表达式"第[0-9]+章"匹配的是我们想要替换的,但是替换的内容是固定的,也就是说,中间的数字在替换时没办法保留。那么如何做到保留部分内容的替换呢?

从实现思路看,这就需在正则表达式中进行改进了。为了保留某部分,通常情况下我们在正则表达式中采用()将我们要保留的内容括住。如下所示,我们要保留的是中间的数字部分,在替换时采用$1将括号的内容表达出来。$1能够认为是一个变量,代表着()中的内容。

全部替换的结果如下所示:

保留多处内容
实际处理时,如图,对于"1 Python 2 Java"这样的内容,要保留1和2,将Python和Java替换为C和C++,和上面说的一样,采用()将保留的内容括住,随后采用$1,$2分别代替第一个()和第二个()中的内容。

结果如下所示:

应用场景
结合项目来看,看这样一个例子,对于从网页上复制过来的内容,在VScode中所呈现的样式和网页中看到的不同,如图:题号单独一行,排版看起来不够整齐。为了将题号放在题目前面,一个一个改有点累,所以决定采用正则表达式进行全局替换。

在进行替换时,要考虑到共性与差异性。
共性:对于所有的数字题号来说,其后面都跟着一个换行符。差异性:对于题目中以数字结尾的选项,同样满足共性,考虑借助题号前面的换行符,保持题号和选项的差异性。

总结
到此这篇关于如何采用正则表达式保留部分内容的替换功能的文章就介绍到这了,更多相关正则表达式保留部分内容替换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!
- 一篇文章了解正则表达式的替换技巧
- 详解易语言正则表达式的多行匹配替换
- 正则表达式的字符串替换方法
- 正则表达式替换字符串并保留其中部分任意内容(最新建议)

