匹配Bash正则表达式中的单个字符

时间:2016-11-13 21:12:45

标签: regex bash shell

出于某种原因,以下正则表达式匹配似乎无法正常工作。

string="#Hello world";
[[ "$string" =~ 'ello' ]] && echo "matches";
[[ "$string" =~ 'el.o' ]] && echo "matches";

第一个命令成功(按预期),但第二个命令不成功。

那个句号不应该被正则表达式视为单个字符吗?

2 个答案:

答案 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