目前我有字符串行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+/)