В первом примере ваше регулярное выражение Some version
начинается с начала строки, а .*
переносит его в конец.$matches
содержит всю строку, потому что регулярное выражение "match" является всей строкой.
Во втором примере \)
охватывает только закрывающую скобку и пробел.Это регулярное выражение "матч", так что это то, что входит в $matches
.Чтобы получить остальное, вам нужно изменить регулярное выражение, чтобы оно соответствовало и остальному: $val1 -match '\) .*'
@ Lee_Dailey ответ хорош для правильного использования Regex, но часто удобно использоватьрегулярное выражение назад и избавиться от того, что вы знаете, оставив неизвестное осталось.
$str = 'Some version v1.2.3.4 (xyz) AnotherVal'
$lastBit = $str -replace 'Some version '
$parts = $lastBit -split ' '