传奇NPC正则匹配拆解替换全套命令使用教程
在传奇版本制作、脚本编写、NPC功能定制过程中,字符检测、内容拆解、文本替换是高频使用的核心操作。借助专属正则NPC命令,可高效实现手机号检测、网址过滤、文本拆分、内容替换等多样化功能,大幅提升传奇脚本的灵活性与实用性。本文详细讲解三大全新正则NPC命令的语法、参数及实战案例,适配各类传奇版本开发场…
在传奇版本制作、脚本编写、NPC功能定制过程中,字符检测、内容拆解、文本替换是高频使用的核心操作。借助专属正则NPC命令,可高效实现手机号检测、网址过滤、文本拆分、内容替换等多样化功能,大幅提升传奇脚本的灵活性与实用性。本文详细讲解三大全新正则NPC命令的语法、参数及实战案例,适配各类传奇版本开发场景。
一、正则匹配检测NPC命令(RegExMatch)
该命令主要用于检测指定源字符是否符合预设正则规则,支持中文及各类通用正则表达式,可快速校验文本格式、筛选特定内容,是传奇脚本风控、内容检测的核心命令。编写的正则表达式可通过内置工具链接验证准确性。
1.1 命令语法
RegExMatch 源字符 匹配表达式
参数说明:源字符为需要检测的目标字符串,匹配表达式为自定义正则规则,支持市面通用正则语法。
1.2 常用实战匹配案例
以下为传奇脚本开发中高频使用的正则检测案例,可直接复制套用:
; 检测手机号码格式
; "1[34578]\d{9}"
; 检测NPC说话内容中的16进制颜色
; "\$[0-9A-Fa-f]+"
; 检测源字符中是否包含网络链接
#if
RegExMatch 源字符 "[a-zA-Z]+:\/\/"
#act
SendMsg 7 检测到违规链接内容
二、正则分解捕获NPC命令(RegExSplitCapture)
该命令用于按照指定正则规则拆分目标字符串,可分别捕获匹配到的目标字符、拆分后剩余字符,同时统计对应数量,适用于传奇脚本中多段文本拆分、道具材料拆分、字符分段提取等场景。
2.1 命令语法
RegExSplitCapture 源字符 查找表达式
2.2 内置返回变量说明
命令执行后自动生成专属内置变量,可直接调用:
·
<$STR(M_MATCHED_CNT)>:匹配成功的字符串总数量
·
·
<$STR(S_MATCHED_STRS[n])>:存储匹配到的字符串,n为数字下标,取值范围0至<$STR(M_MATCHED_CNT)>-1
·
·
<$STR(M_SPLIT_CNT)>:拆分后剩余非匹配字符串总数量
·
·
<$STR(S_SPLIT_STRS[n])>:存储拆分后剩余的字符串,n为数字下标,取值范围0至<$STR(M_SPLIT_CNT)>-1
·
补充说明:拆分剩余字符串指源字符剔除匹配内容后剩余的所有内容,例如源字符为“左中右”,按表达式匹配“中”,则匹配数量为1,剩余字符串数量为2。
2.3 基础实战案例
#act
; 按数字表达式拆分文本,提取数字内容与剩余文本
RegExSplitCapture 左123中456右 [0-9]+
; 执行后返回结果
; <$STR(M_MATCHED_CNT)> = 2
; <$STR(S_MATCHED_STRS[0])> = 123
; <$STR(S_MATCHED_STRS[1])> = 456
; <$STR(M_SPLIT_CNT)> = 3
; <$STR(S_SPLIT_STRS[0])> = 左
; <$STR(S_SPLIT_STRS[1])> = 中
; <$STR(S_SPLIT_STRS[2])> = 右
三、正则替换字符NPC命令(RegExReplace)
该命令通过正则规则匹配目标文本,批量替换指定内容,支持自定义替换次数,默认单次替换,可实现特殊字符清除、文本格式统一、冗余内容剔除等功能,广泛应用于传奇道具文本整理、聊天内容过滤、变量数据格式化场景。
3.1 命令语法
RegExReplace S1 查找表达式 替换字符 替换次数(默认1次)
参数说明:S1为待处理的源变量字符,执行命令后替换结果直接覆盖至S1变量。
3.2 高阶综合实战案例
本案例实现传奇装备材料文本格式化拆分、冗余内容清除、分段展示合成材料与装备信息,可直接用于NPC合成系统脚本:
#if
True
#Act
; 初始化装备材料变量
Mov S11 强化圣战头盔|4,坚硬圣战头盔|5,破魔圣战头盔|6,嗜血圣战头盔|7,+装备碎片|10+原质晶石|0
; 常规替换:将所有|符号替换为*,统一文本格式
StringReplace S11 | *
; 复制变量备份,用于分段拆分处理
Mov S12 <$Str(S11)>
Mov S13 <$Str(S11)>
; 正则替换:清除所有+号及后续冗余内容,保留装备列表
RegExReplace S12 "[+].*" ""
; 获取处理后装备文本长度,用于精准拆分变量
GetStrLengTh $Str(S12) M11
; 截取变量,分离装备文本与材料文本
Dec S13 1 <$STR(M11)>
; 正则拆分:以+号为分隔符,拆分材料内容
RegExSplitCapture <$Str(S13)> "[+]+"
; 赋值材料数据数量,规避变量动态变动问题
Mov M数据数量 <$STR(M_SPLIT_CNT)>
; 倒序循环展示合成材料
#For (M循环次数 = M数据数量 - 1, M循环次数 ? 0, M循环次数 - 1)
#if
True
#Act
Sendmsg 7 需要材料<$LoopCursor>:<$STR(S_SPLIT_STRS[<$LoopCursor>])>
#if
CompVal <$LoopCursor> = 1
#act
BreakLoop
#~For
; 正则拆分:以逗号为分隔符,拆分装备列表
#if
True
#Act
RegExSplitCapture <$Str(S12)> "[,]+"
; 剔除空数据,精准统计有效装备数量
Mov M数据数量 <$STR(M_SPLIT_CNT)>
Dec M数据数量 1
; 正序循环展示合成装备结果
#For (M循环次数 = 0, M循环次数 < M数据数量, M循环次数 + 1)
#if
True
#Act
Sendmsg 7 合成结果<$Str(M循环次数)>:<$STR(S_SPLIT_STRS[<$Str(M循环次数)>])>
#~For
四、命令使用核心注意事项
1、正则表达式特殊符号需规范书写,+、*、.等特殊字符如需作为普通字符匹配,需用中括号包裹,避免解析异常。
2、拆分命令返回的下标从0开始,存在空值情况,编写循环脚本时需提前过滤空数据,避免弹窗报错。
3、替换命令支持自定义替换次数,批量全局替换可修改参数,默认仅替换首个匹配内容。
4、所有正则规则可通过传奇脚本适配工具验证,确保匹配、拆分、替换效果精准无误。


