如何在方括号之间提取字符串

时间:2019-05-24 14:19:29

标签: regex powershell groovy

我必须使用Powershell或Groovy脚本从方括号中提取字符串。

PowerShell:

$string = "[test][OB-110] this is some text"  

$found = $string -match '(?<=\[)[^]]+(?=\])'  
echo $matches

当我运行上面的代码时,它返回:

test 

我希望它返回此值:

test
OB-110

我需要提取方括号内的所有文本。

2 个答案:

答案 0 :(得分:4)

-match将在后台内部调用Regex.Match(),而后者只会捕获第一个匹配项。

通过Select-String开关使用-AllMatches

($string |Select-String '(?<=\[)[^]]+(?=\])' -AllMatches).Matches.Value

或直接调用Regex.Matches()

[regex]::Matches($string, '(?<=\[)[^]]+(?=\])').Value

答案 1 :(得分:3)

对于Groovy:

def str = "[test][OB-110] this is some text"

str.findAll(/(?<=\[)[^]]+(?=\])/).each {
    println it
}

哪些印刷品

test
OB-110