目前我有字符串行feature/USRSTORY-447-testing-rest-api

我只想提取USRSTORY-447

目前,我写了一行有效的行,并得到以下输出:

str.substring(str.indexOf("/") + 1, str.indexOf("-") + 4);

USRSTORY-447


但是将来,当USRSTORY -之后的数字计数超过3个数字时,它只会提取´-`之后的前3个数字。任何人都可以帮助解决该问题,从而无需更改上面的代码行每次?

最佳答案

您可以使用StringGroovyMethods.find(regex)提取您感兴趣的用正则表达式表示的部分:

def str = "feature/USRSTORY-447-testing-rest-api".find(/USRSTORY-\d+/)
assert str == 'USRSTORY-447'


它从给定的字符串中提取USRSTORY-447

您甚至可以将其概括一下-假设USRSTORY可以被任何大写的字符串替换,以下表达式将处理这种情况:

"feature/USRSTORY-447-testing-rest-api".find(/([A-Z]+)-\d+/)

10-07 14:47