Lua脚本中gsub函数不符合预期问题:提取指定格式字符串
Lua字符串匹配问题解决
问题根源
你之前的gsub写法只是简单替换字符串中的"smart "子串,没有对整个输入的结构做校验:
- 输入"smart"或"smart "时,因为没有匹配到"smart "(前者无空格,后者空格后无内容),原字符串会被原样返回,无法触发返回nil的需求;
- 同时这种写法无法区分"smart app"和其他带"smart "的字符串(比如"smart app test"),不符合仅针对"smart app"输出"app"的要求。
一行代码解决方案
利用Lua的string.match结合模式匹配校验整个字符串结构,一行代码完成需求:
output_string = input_string:match("^smart (%w+)$")
代码解释
^匹配字符串开头,$匹配字符串结尾,确保整个输入严格符合smart 单词的格式;(%w+)捕获空格后面的所有字母数字字符(即目标输出"app"),匹配成功则返回捕获内容,否则返回nil;- 该写法会让输入"smart app"时返回"app",输入"smart"、"smart "、"smr"、"smr "或其他不符合格式的字符串时,均返回
nil,完全满足需求。
内容的提问来源于stack exchange,提问作者Frid-j
相关产品推荐
相关产品推荐

