【发布时间】:2018-02-14 19:53:31
【问题描述】:
我想捕获与正则表达式匹配的部分字符串(参见下面的代码)。例如给定:apply plugin: 'java' 我想捕获java。
我整理了以下正则表达式。当我执行下面的代码(在 Linux 或 Mac OS 上)时,找到了一个匹配项,但 BASH_REMATCH 数组为空(即长度为零)。
有人知道正则表达式和/或其应用程序有什么问题吗?
regex="^[[:space:]]*apply[[:space:]]*plugin:[[:space:]]*'([[:alpha:]]+)'[[:space:]]*$"
if [[ "$line" =~ $regex ]]; then
echo "Match count is ${#BASH_REMATCH[@]}."
echo ${BASH_REMATCH[1]}
else
echo "No match."
fi
【问题讨论】:
-
你能显示
declare -p line的输出吗 -
见ideone.com/DzvKzX,Linux中的数组不为空。
-
你的 bash 版本是什么?
-
@glennjackman GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin16)