Powershell с использованием Regex, находящего строку в строке

Нужна помощь с использованием регулярных выражений и powershell для выполнения следующего. У меня есть следующая строка примера:

<INPUT TYPE="hidden" NAME="site2pstoretoken" VALUE="v1.2~04C40A77~23"\><INPUT TYPE="hidden" NAME="p_error_code" VALUE="">

Единственное, что я хочу извлечь из этой строки примера, — это хэш, хранящийся в VALUE. Хэш очень длинный, поэтому мне нужно перехватить все между VALUE=" ....HASH...." "\>

Как будет выглядеть регулярное выражение?


person DeChinees    schedule 18.01.2011    source источник


Ответы (1)


Попробуйте это с предупреждением, что разбор html с помощью регулярных выражений — плохая идея:

$regex = [regex]'(?<=VALUE=")[^"]*'
$regex.Match('te2pstoretoken" VALUE="v1.2~04C40A77~23"\><INP').Value

Изменить: и этот код тоже работает:

if ('te2pstoretoken" VALUE="v1.2~04C40A77~23"\><INP' -match '(?<=VALUE=")[^"]*') { 
   $matches[0] 
}
person stej    schedule 18.01.2011
comment
@stej: В чем разница между использованием Match().Value и Match().Groups[index].Value - person KalenGi; 21.06.2012