
DOF|使用正则表达式批量删除词条教程|正则表达式写法延伸
我们在修改pvf的过程中,有时候会有批量删除某些词条的功能,比如删除装备中的魔法封印词条。近期我就遇到了这个需求,研究了一下,并且解决了这个问题。其实就是正则表达式的活学活用。在此分享给大家。
一、需求复现
我这边的PVF里面有57万条装备的数据,但是我又不知道哪些装备是魔法封印,并且魔法封印的装备分布在各个文件夹,很明显没法一个个找找出来修改。所以我全部进行了导出。一共577090个文件。
并且我们知道,魔法封印的词条是这样的:
[random option]
1
可以看看这个实例文件
我们需要删除的是39、40、41行。只需要用正则表达式批处理删除就可以了。解决这个问题倒是其次,主要是正则表达式的某些写法和匹配机制。
很明显,如果我们要匹配到[random option]我们用\[random option\]就可以了,如果需要匹配到下一行的1,由于1前面有一个制表符,我们需要把正则表达式修改为\[random option\]\r\n\t1,效果如下:
匹配上了。
我们直接替换掉,替换地方留空,就可以删除这个词条和下面的1.
但是这里空出来两行。这肯定不是我们想要的,我们只想留一行。一方面是如果每个词条字段都这样删除,最后会空出来很多行,不利于浏览,排版也不好看。二来,可能会有意想不到的BUG,导致游戏没法运行。三来,我有强迫症。
这个时候,我们在\[random option\]\r\n\t1的前面加上一个\r\n匹配到[random option]上的一个空行,就能匹配上着三行了,接下来再替换。
这个时候就是我们想要的效果了。只留下了一个空格。
========================================================
这个时候我们延伸一下。如果我们要删除下面这些内容呢?正则表达式怎么写?
其实很简单了,已经知道\r\n和\t的写法了。我们完全可以手搓一个正则表达式出来。这里我来写一个:
\[magical defense\]\r\n\t78\r\n\r\n\[equipment magical defense\]\r\n\t6800\t6640\r\n\r\n\[random option\]\r\n\t1
我们可以看到,也可以正确匹配的上。别看上面的表达式很长,其实就是\r\n\t的拼接,没什么难度。照着结构写就可以了。但是可以看出来,正则表达式是很灵活的,可以根据自己的需要去写,匹配不同的内容。
看完这个文章,相比你应该也明白正则表达式的基本写法了。如果对你有帮助。可以留下你的评论。