我有以下运行正则表达式的管道步骤
- TICKET_NAME="$(echo $BRANCH_NAME | sed -E 's~^(.*/){0,1}((ABV|ASD|WSX)-[0-9]{2,6})-.*~\2~I')"
基本上,$BRANCH_NAME
可以是以下内容
fix/ABV-123-test-version
ABV-4233-test-another-thing
feature/-ASD-my-feature
我想要的是,始终检索始终以 ABV|ASD|WSX
开头并始终在号码之后结束的票号。
因此 ABS-123
或 ASD-3423
数字可以是任何数字,但它始终是相同的模式。
我当前的正则表达式有效,但它也计算前缀所以 fix/ABV-123
我只想要 ABV-123
最佳答案
使用sed
$ sed -En 's~([^/]*/)?([AW][BS][VDX]-[0-9]+).*~\2~p' input_file
ABV-123
ABV-4233
关于regex - 如何仅从字符串中检索票号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74217901/