我正在尝试从字符串中删除着色代码;例如从:\033[36;1mDISK\033[0m
到:DISK
我的正则表达式看起来像这样:\033.*?m
所以匹配 '\033' 后跟任意数量的字符,以 'm' 终止
当我搜索模式时,它会找到匹配项;[[ "$var" =~ $regex ]]
评估为真
但是,当我尝试替换匹配项时,什么也没有发生,并且返回了相同的字符串。
这是我的完整脚本:
regex="\033.*?m"
var="\033[36;1mDISK\033[0m"
if [[ "$var" =~ $regex ]]
then
echo "matches"
echo ${var//$regex}
else
echo "doesn't match!"
fi
问题似乎与匹配正则表达式的任意数量的任何字符部分有关。我可以成功替换DISK
,但如果我将其更改为D.*K
或D.*?K
失败。
请注意,在上述所有情况下,模式都声称与字符串匹配,但在替换时失败。现在不太确定该去哪里,任何帮助表示赞赏。
谢谢