Jenkins/Groovy:如何拉取字符串的特定部分
Jenkins/Groovy: How to pull specific part of a string
我有一个看起来像这样的字符串:
data = ABSIFHIEHFINE -2938 NODFNJN {[somedate]} oiejfoen
我只需要在包含 {[]} 的情况下拉取 {[somedate]}
。
我试图做 data.substring(0, data.indexOf(']}'))
来删除字符串的结尾,但它也删除了我需要保留的符号
I need to pull {[somedate]} only with {[]} included.
def data = 'ABSIFHIEHFINE -2938 NODFNJN {[somedate]} oiejfoen'
// you could do error checking on these to ensure
// >= 0 and end > start and handle that however
// is appropriate for your requirements...
def start = data.indexOf '{['
def end = data.indexOf ']}'
def result = data[start..(end+1)]
assert result == '{[somedate]}'
您可以使用正则表达式搜索来完成:
data = "ABSIFHIEHFINE -2938 NODFNJN {[somedate]} oiejfoen"
def matcher = data =~ /\{\[.+?\]\}/
if( matcher ) {
echo matcher[0]
}
else {
echo "no match"
}
输出:
{[somedate]}
说明:
=~
是查找运算符。它创建了一个 java.util.regex.Matcher
.
- 正斜杠之间的字符串(这只是定义字符串文字的另一种方式)是正则表达式:
\{\[.+?\]\}
- RegEx 细分:
\{\[
- 文字 {
和 [
必须转义,因为它们在 RegEx 中具有特殊含义
.+?
- 任何字符,至少一个,尽可能少(以支持查找包含在 {[]}
中的多个子字符串)
\]\}
- 文字 ]
和 }
必须转义,因为它们在 RegEx 中具有特殊含义
- 您可以 test the RegEx only or use Groovy IDE 测试完整的示例代码(将
echo
替换为 println
)。
我有一个看起来像这样的字符串:
data = ABSIFHIEHFINE -2938 NODFNJN {[somedate]} oiejfoen
我只需要在包含 {[]} 的情况下拉取 {[somedate]}
。
我试图做 data.substring(0, data.indexOf(']}'))
来删除字符串的结尾,但它也删除了我需要保留的符号
I need to pull {[somedate]} only with {[]} included.
def data = 'ABSIFHIEHFINE -2938 NODFNJN {[somedate]} oiejfoen'
// you could do error checking on these to ensure
// >= 0 and end > start and handle that however
// is appropriate for your requirements...
def start = data.indexOf '{['
def end = data.indexOf ']}'
def result = data[start..(end+1)]
assert result == '{[somedate]}'
您可以使用正则表达式搜索来完成:
data = "ABSIFHIEHFINE -2938 NODFNJN {[somedate]} oiejfoen"
def matcher = data =~ /\{\[.+?\]\}/
if( matcher ) {
echo matcher[0]
}
else {
echo "no match"
}
输出:
{[somedate]}
说明:
=~
是查找运算符。它创建了一个java.util.regex.Matcher
.- 正斜杠之间的字符串(这只是定义字符串文字的另一种方式)是正则表达式:
\{\[.+?\]\}
- RegEx 细分:
\{\[
- 文字{
和[
必须转义,因为它们在 RegEx 中具有特殊含义
.+?
- 任何字符,至少一个,尽可能少(以支持查找包含在{[]}
中的多个子字符串)\]\}
- 文字]
和}
必须转义,因为它们在 RegEx 中具有特殊含义
- 您可以 test the RegEx only or use Groovy IDE 测试完整的示例代码(将
echo
替换为println
)。