gpt4 book ai didi

regex - 在 bash 中返回正则表达式匹配

转载 作者:行者123 更新时间:2023-11-29 09:23:13 25 4
gpt4 key购买 nike

使用 bash,我可以检查变量的值是否与正则表达式匹配。但是,我找不到返回匹配部分的方法。这可能吗?

例如将 $test 作为 test="123456-name-goes-here.1.2.3-something.zip" 我想返回的部分是 1.2.3-something

通过下面的代码,我可以成功匹配$test,但我不知道从哪里开始。

[[ $test =~ ([0-9]\.[0-9](\.[0-9])?(\.[0-9])?)(-[a-z-]*)? ]] && echo "matched"

最佳答案

$BASH_REMATCH[0] 将包含您需要的值:

test="123456-name-goes-here.1.2.3-something.zip"
reg="[0-9]\.[0-9](\.[0-9])?(\.[0-9])?(-[a-z-]*)?"
if [[ $test =~ $reg ]]; then
echo ${BASH_REMATCH[0]};
fi

查看 IDEONE demo

参见 this cheatsheet:

Regular expression captures will be available in $BASH_REMATCH, ${BASH_REMATCH[1]}, ${BASH_REMATCH[2]}, etc.

这意味着整个匹配值存储在 ${BASH_REMATCH} 中,Index = 0,后续项包含使用 (...) 捕获的子匹配项>(捕获组)。

关于regex - 在 bash 中返回正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com