regex - BASH_REMATCH 不捕获

标签 regex bash zsh

我试图在 bash 中捕获路径的一部分:

输入:/Users/foo/.virtualenvs/venv-test-server

代码:

#!/bin/zsh
regex="^.*\/venv-(.*)$"
if [[ $VIRTUAL_ENV =~ $regex ]] ; then
  echo "Matched!"
  echo ${BASH_REMATCH[1]}
fi

输出:匹配!

但是没有打印匹配项。为什么?

最佳答案

脚本指定 zsh 而不是 bash:

#!/bin/bash
       ^^^^

如果你想使用zsh,你需要在使用=~之前设置BASH_REMATCH选项:

setopt KSH_ARRAYS BASH_REMATCH

关于regex - BASH_REMATCH 不捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31695600/

相关文章:

C# 多个正则表达式替换字符串 - 内存太多

bash - 在 bash 中实现 netcat

git - ohmyzsh 在我当前的 git 存储库中有一个额外的符号

zsh - 在 zsh 中将退格键绑定(bind)到任何内容

linux - 更改登录 shell 时出现问题

R 中的正则表达式限制一个术语 AND 另一个不是 OR 另一个

Java 如何按我的预期使用 Regex mask numberic

bash - [-f : Command not found, Bash 脚本文件是否存在

bash - 如何使用脚本 cd 进入目录?

Java正则表达式找到不在字符范围内的第一个字符