给出以下JavaScript代码:
const branch = 'PRODUCT-1234-foobar';
const match = (/^(?:product|core|shop)-\d+/i).exec(branch);
const name = match ? match[0] : 'unknown';
给定一个以PRODUCT-
,CORE-
或SHOP-
开头且后跟至少一个数字的分支,这将为我提供分支名称的第一部分,在这种情况下PRODUCT-1234
。
我一直在尝试在Bash中做同样的事情,但我似乎无法使其发挥作用。我该怎么做?答案最好不区分大小写。
答案 0 :(得分:2)
您可以使用shopt -s nocasematch
使后续匹配大小写不敏感(请参阅this source)。
使用
shopt -s nocasematch
branch='PRODUCT-1234-foobar'
reg="^(product|core|shop)-[0-9]+"
if [[ $branch =~ $reg ]]; then
echo ${BASH_REMATCH[0]};
fi
请参阅online demo。
模式详情
^
- 字符串开始(product|core|shop)
- 其中一个替代方案-
- 连字符[0-9]+
- 一位或多位数。 ${BASH_REMATCH[0]}
代表整个匹配值。