说我有这个Matlab或Octave char变量:
>> filename = 'my.file.ext'
我想要一个regexprep命令,在扩展名之前的文件名中添加一个后缀,例如“ _old”,将其转换为“ my.file_old.ext”。
以下内容将所有点替换为“ _old”:
>> regexprep(filename, '\.', '_old.')
ans =
'my_old.file_old.ext'
什么是仅在最后一个点之前加上“ _old”的regexprep命令?(理想情况下,如果没有点(没有扩展名),请在末尾附加“ _old”。)
先感谢您!
您可以使用
regexprep(filename, '^(?:(.*)(\.)|(.*))', '$3$1_old$2')
细节
^
-字符串开始(?:(.*)(\.)|(.*))
-与两个选项之一匹配的非捕获组:
(.*)(\.)
-第1组(后向$1
引用是指该组的值):尽可能多的零个或多个字符,然后是第2组($2
):一个点|
- 要么(.*)
-第3组($3
):尽可能多的零个或多个字符如果不匹配替代项,则对捕获组的反向引用为空字符串。因此,如果(.*)(\.)
匹配,则替换为组1 _old
+组2的值。否则,它是第3组+ _old
(仅在末尾附加)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句