我必须使用Powershell或Groovy脚本从方括号中提取字符串。
PowerShell:
$string = "[test][OB-110] this is some text"
$found = $string -match '(?<=\[)[^]]+(?=\])'
echo $matches
当我运行上面的代码时,它返回:
test
我希望它返回此值:
test
OB-110
我需要提取方括号内的所有文本。
答案 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