Нужна помощь в поиске значения в этой строке с помощью PowerShell - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть эта строка: <div class="details"><label>Contract Size | Price</label><span title="DayVol: 114,102 / OI: 9,239">600 @ 1.21</span></div>

Я ищу, чтобы найти это значение 600 @ 1,21

Это значение меняется, может кто-нибудь помочь мне найти способ получить его динамически?

Ответы [ 3 ]

0 голосов
/ 29 апреля 2020

Вы можете проанализировать строку как документ XML в PowerShell, а затем перемещаться по элементам:

PS C:\Users\Luke> $xmlstring = '<div class="details"><label>Contract Size | Price</label><span title="DayVol: 114,102  / OI: 9,239">600 @ 1.21</span></div>';
PS C:\Users\Luke> echo ([xml]$xmlstring).div.span.'#text'
600 @ 1.21
0 голосов
/ 29 апреля 2020

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

$input = @"
<div class="details"><label>Contract Size | Price</label><span title="DayVol: 114,102 / OI: 9,239">600 @ 1.21</span></div>
"@

$xml = [xml] $input

$value = $xml.div.span.innertext

$value # 600 @ 1.21

Вы можете преобразовать это в однострочник, если хотите, но это немного яснее, что он делает, как несколько шагов ...

0 голосов
/ 28 апреля 2020

Вот способ использования регулярных выражений. Я не лучший в регулярных выражениях, поэтому, возможно, его нужно изменить.

$string=@"
<div class="details"><label>Contract Size | Price</label><span title="DayVol: 114,102  / OI: 9,239">600 @ 1.21</span></div>
"@

$regex = "(?<=\>)\d.*[ ][@][ ]\d.*[.]\d.*(?=\</span>)"

$string -match $regex
$myValue = $matches[0]

Я ищу любой NUMBERofanylength-space-@-spaceNUMBERofanylength-Period-NUMBERofanylength, предшествующий тегу </span>. Это будет работать, если в ваших данных нет других похожих строк.

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