出于某种原因,以下正则表达式匹配似乎不起作用。
string="#Hello world";
[[ "$string" =~ 'ello' ]] && echo "matches";
[[ "$string" =~ 'el.o' ]] && echo "matches";
Run Code Online (Sandbox Code Playgroud)
第一个命令成功(如预期),但第二个没有。
正则表达式不应该将该句点视为单个字符吗?
引用句点会使其被视为文字字符,而不是正则表达式元字符。如果要引用整个正则表达式,最佳实践是在变量中引用,其中正则表达式匹配规则无效,然后展开不加引号的参数(在里面这样做是安全的[[ ... ]])。
regex='el.o'
[[ "$string" =~ $regex ]] && echo "matches"
Run Code Online (Sandbox Code Playgroud)