我正在尝试与包含星号的变量进行正则表达式匹配。
Bash中的以下命令集会在运算符左侧的变量中使用星号进行文件名扩展。
test='part1 * part2'
[[ "$test" =~ ^(.+)\ .\ (.+)$ ]] && echo $BASH_REMATCH
结果:part1 FILE1 FILE2 part2
但它应该导致:part1 * part2
我进行了搜索和搜索,但无法弄清楚为什么会发生这种情况。
答案 0 :(得分:1)
我在询问时意识到,正则表达式匹配工作正常。双括号内发生 no 扩展。在匹配之后发生扩展,此时回显结果。 $BASH_REMATCH
变量包含星号,需要双引号。
正确的命令集是:
test='part1 * part2'
regex='^(.+) . (.+)$'
[[ "$test" =~ $regex ]] && echo "$BASH_REMATCH"
更新:在测试之外设置正则表达式。