正则表达式匹配失败求助:无法匹配目标FBX格式文件名
正则匹配问题修正
原正则的问题
[a-z][A-Z][0-9]仅匹配三个固定顺序的字符(小写→大写→数字),但目标字符串low_后是驼峰式字母串(如pileOfStone...),无强制数字且长度远大于3,完全不匹配。- 未转义的
.是正则通配符,会匹配任意单个字符,而非文件名里的点号,需改为\.(C++字符串中要写\\.)。 - 缺少结尾锚定
$,可能错误匹配带多余后缀的字符串(如xxx.fbx.txt)。
修正后的正则(C++ 版本)
std::regex("^[0-9]+_mesh_fbx_low_[a-zA-Z]+(?:[A-Z][a-zA-Z]*)*\\.(?:fbx|glb|obj)$")
正则各部分说明
^[0-9]+:匹配开头的任意长度数字串(如00010)_mesh_fbx_low_:匹配固定的标识字符串[a-zA-Z]+(?:[A-Z][a-zA-Z]*)*:匹配驼峰式命名,支持小写开头后接多组“大写字母+任意字母”的组合\\.:转义后匹配文件名的后缀分隔点号(?:fbx|glb|obj):非捕获组,匹配三种合法的3D文件后缀$:锚定字符串结尾,确保无多余字符
如果允许名称中包含数字,可将正则中的[a-zA-Z]替换为[a-zA-Z0-9]:
std::regex("^[0-9]+_mesh_fbx_low_[a-zA-Z0-9]+(?:[A-Z][a-zA-Z0-9]*)*\\.(?:fbx|glb|obj)$")
内容的提问来源于stack exchange,提问作者sameer karjatkar
相关产品推荐
相关产品推荐

