Извлечь номер версии из строки, оптимальный путь? - PullRequest
2 голосов
/ 03 мая 2019

У меня есть эта строка:

<span class="cloud-browser-downloads__dl-row-chrome-container cloud-body-text__small">Chrome v. <span class="cloud-browser-downloads__dl-row-chrome-version">74.0.3729.131</span></span>

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

Прямо сейчас я делаю это через REGEX, как это:

-match "\d{1,}[\.]\d{1,}[\.]\d{1,}[\.]\d{1,}"

(1 или более номеров, точка, 1 или более номеров, точка, 1 или более номеров, точка, 1 или более номеров)

Это прекрасно работает, однако, что если бы они изменили название версии?

Другой способ увидеть это - выделить то, что находится между

<span class="cloud-browser-downloads__dl-row-chrome-version">

и

</span>

Просто ищу ваше мнение о наиболее безопасном способе подойти к этому.

К вашему сведению: я знаю, что могу использовать Invoke-Webrequest для извлечения фактического элемента, но по какой-то причине эта команда зависает на этом конкретном URL-адресе Google, поэтому мне пришлось просто извлечь исходный код из объекта InternetExplorer.Application COM.

Ответы [ 2 ]

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

Приведите свою строку в xml:

$XML = [XML]'<span class="cloud-browser-downloads__dl-row-chrome-container cloud-body-text__small">Chrome v. <span class="cloud-browser-downloads__dl-row-chrome-version">74.0.3729.131</span></span>'

> [version]$xml.span.span.'#text'

Major  Minor  Build  Revision
-----  -----  -----  --------
74     0      3729   131
1 голос
/ 03 мая 2019

Вы можете использовать с -match.

$str =  "<span class=cloud-browser-downloads__dl-row-chrome-container cloud-body- 
text__small>Chrome v. <span class=cloud-browser-downloads__dl-row-chrome- 
  version>74.0.3729.131</span></span>"
 $regex = [regex] "\d{1,}[\.]\d{1,}[\.]\d{1,}[\.]\d{1,}"

$found = $str -match $regex

if ($found) {
 $ip = $matches[0]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...