Как извлечь строку в квадратных скобках - PullRequest
0 голосов
/ 24 мая 2019

Мне нужно извлечь строку из квадратных скобок, используя скрипт Powershell или Groovy.

PowerShell:

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

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

Когда я запускаю приведенный выше код, он возвращает:

test 

Я хочу вернуть это:

test
OB-110

Мне нужно извлечь весь текст в скобках.

Ответы [ 2 ]

4 голосов
/ 24 мая 2019

-match внутренне вызовет Regex.Match() в фоновом режиме, который, в свою очередь, будет захватывать только первое совпадение.

Либо используйте Select-String с переключателем -AllMatches:

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

Или вызвать Regex.Matches() напрямую:

[regex]::Matches($string, '(?<=\[)[^]]+(?=\])').Value
3 голосов
/ 24 мая 2019

Для Groovy:

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

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

Какие отпечатки

test
OB-110
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...