如何使用正则表达式保留部分内容的替换功能
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">保留一处内容</a></li><li><a href="#_label1">保留多处内容</a></li><li><a href="#_label2">应用场景</a></li><li><a href="#_label3">总结 </a></li></ul></div><p>使用正则表达式实现保留部分内容的替换</p><blockquote><p>可惜没有如果,去替换时间对心的冷漠。<br /><br />什么是真的念念不忘,不过就是旧情被替换了而已。<br /><br />而夜幕,却依旧如期降临,深冬的风替换曾经的烟花三月,举目四望,偌大的桌边只我一人,空对,一盏冰冷的茶。</p></blockquote>
<p>对于查找替换大家可能都不陌生,基本上所有的编辑器都有这样的功能。但是普通的查找替换肯定不能满足用户对于泛化查找的需求。于是有了基于正则表达式的查找替换。对于正则表达式的规则这里不再说明,如果不太清楚可以自行百度。</p>
<p class="maodian"><a name="_label0"></a></p><h2>保留一处内容</h2>
<p>大家可以看这样一个例子:如下图,如果我想将所有的"第n章"替换为"第n节",那么如何替换?直接将"章"替换为"节",为了避免其他的"章"被替换掉,通常情况下我们需要一个一个进行替换。如何避免这种情况呢?</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/202303160918397.png" /></p>
<p>我们可以将"第n章"替换为"第n节",但问题是n是变化的,所以替换时会用到正则表达式。例如正则表达式"第+章"匹配的是我们想要替换的,但是替换的内容是固定的,也就是说,中间的数字在替换时没办法保留。那么如何做到保留部分内容的替换呢?</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/202303160918398.png" /></p>
<p>这就需要在正则表达式中进行改进了。为了保留某部分,通常情况下我们在正则表达式中使用()将我们要保留的内容括住。如下,我们要保留的是中间的数字部分,在替换时使用$1将括号的内容表达出来。$1可以认为是一个变量,代表着()中的内容。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/202303160918399.png" /></p>
<p>全部替换的结果如下:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/2023031609183910.png" /></p>
<p class="maodian"><a name="_label1"></a></p><h2>保留多处内容</h2>
<p>如图,对于"1 Python 2 Java"这样的内容,要保留1和2,将Python和Java替换为C和C++,和上面说的一样,使用()将保留的内容括住,然后使用$1,$2分别代替第一个()和第二个()中的内容。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/2023031609183911.png" /></p>
<p>结果如下:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/2023031609183912.png" /></p>
<p class="maodian"><a name="_label2"></a></p><h2>应用场景</h2>
<p>看这样一个例子,对于从网页上复制过来的内容,在VScode中所呈现的样式和网页中看到的不同,如图:题号单独一行,排版看起来不够整齐。为了将题号放在题目前面,一个一个改有点累,所以决定使用正则表达式进行全局替换。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/2023031609183913.jpg" /></p>
<p>在进行替换时,要考虑到共性与差异性。</p>
<p>共性:对于所有的数字题号来说,其后面都跟着一个换行符。差异性:对于题目中以数字结尾的选项,同样满足共性,考虑利用题号前面的换行符,保持题号和选项的差异性。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202303/2023031609183914.jpg" /></p>
<p class="maodian"><a name="_label3"></a></p><h2>总结 </h2>
頁:
[1]