跳转至

正则表达式教程

本教程由百度贴吧-销锋镝铸编写

前言

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本,注意此功能一般默认是关闭的,需要手动开启
只要了解了基础的正则表达式知识,就能大大提高批量修改文本的效率
在多数手机端文本编辑器中,正则表达式功能是缺失或不完整的,如果发现你使用的文本编辑器功能不完整,建议使用PC端的Sublime TextNotepad++
更加详细的介绍和教程可参考:正则表达式_百度百科正则表达式 - 教程 | 菜鸟教程

常用符号

符号说明
.匹配除换行和回车外任意单个字符
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
\n匹配一个换行符
\d匹配一个数字字符(0~9)
{n}匹配前面一个字符或字符集合确定的n次
*匹配前面的子表达式零次或多次(0~+∞)。例如,zo*能匹配“z”,“zo”以及“zoo”
[xyz]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”
[^xyz]负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”
(xxx)匹配xxx(任意字符串)并获取这一匹配,在替换时写$1~$9即代表获取的第1~9个xxx
x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”

例子

例一

批量修改Database.xml中所有生物的一个属性值,以攻击抗性为例

查找

<Parameter Name="AttackResilience" Guid="(.*)" Value=".*" Type="(.*)" />
替换
<Parameter Name="AttackResilience" Guid="$1" Value="xxx" Type="$2" />
xxx为要替换成的属性值

例二

批量修改Blocksdata.txt中第m个分号后面的属性值

查找

^((([^;\n]*);){m})[^;\n]*
替换
($1)xxx
m为该属性所在行前面的英文分号;总数,xxx为要替换成的值

如果只要修改第m个分号后面是特定值的属性值,把查找内容改成:

^((([^;\n]*);){m})yyy
yyy是特定值

特别注意

部分只有分号;的“空行”在批量修改后需要手动将这些“空行”改回只有分号;
在2.1版的blocksdata.txt中第2、37、64、94、152、154、156、205、207、227行是这样的,其他版本自行确定

除了正则表达式能批量修改Blocksdata.txt外,还可以使用Blocksdata编辑器