出于某种原因,以下正则表达式匹配似乎无法正常工作。
string="#Hello world";
[[ "$string" =~ 'ello' ]] && echo "matches";
[[ "$string" =~ 'el.o' ]] && echo "matches";
第一个命令成功(按预期),但第二个命令不成功。
那个句号不应该被正则表达式视为单个字符吗?
答案 0 :(得分:3)
引用句点会使其被视为文字字符,而不是正则表达式元字符。如果要引用整个正则表达式,最佳做法是在变量中执行此操作,其中正则表达式匹配规则不起作用,然后展开参数unquoted(在[[ ... ]]
内可以安全地进行)。 / p>
regex='el.o'
[[ "$string" =~ $regex ]] && echo "matches"
答案 1 :(得分:0)
string="#Hello world";
[[ "$string" =~ ello ]] && echo "matches";
[[ "$string" =~ el.o ]] && echo "matches";
测试
$ string="hh elxo fj"
$ [[ "$string" =~ el.o ]] && echo "matches";
matches