从字符串中提取版本号,最佳方式?

Extract version number from string, optimal way?

我有那个字符串:

<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 来获取实际元素,但由于某种原因,该命令挂在这个特定的 google URL 上,所以我不得不凑合着获取带有 InternetExplorer.Application COM 对象的源代码。

将您的字符串转换为 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

您可以与 -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]
}