1

我想获取一些我正在导航的 html 页面的文本 这是一个程序版本号

"(\d\.\d\.\d\.\d)" The regex code.

我想在 webBrowser1_DocumentCompleted 中执行这个命令

像这样的东西

字符串 html = webBrowser1.Document.Body.InnerText;

            // scrape keywords
            version = Regex.Match(html, @"""(\\d\\.\\d\\.\\d\\.\\d)""",

RegexOptions.IgnoreCase).Groups[0].Value;

这似乎不起作用。(我要查找的文本不在正文或指定的任何位置,我只需要获取整个 html 代码并在那里找到它)

我可以确认这不起作用的是我获取 HTML 文本的方式,我需要替代方式,因为没有主体或任何东西我只需要整个网络浏览器文本并使用正则表达式(我认为正则表达式工作正常)

4

2 回答 2

3

表达式@"(\d\.\d\.\d\.\d)"应该匹配并捕获整个版本号,无论它在 HTML 中的什么位置。

于 2012-10-18T16:16:48.290 回答
2

此 RegEx\d\.?将匹配此 HTML 中的版本号:

<html>
<body>
    <span>3.4.2.6</span>
</body>
</html>

请记住,返回了四个匹配项,因此在使用它时,您需要获取整个匹配项而不是单个组。

所以,你可以这样使用它:

var version = RegEx.Match(html, @"\d\.?").Value;

另一个更具体的可能正则表达式也是((\d\.){3}\d{1}). 此 RegEx 将在以下字符串中两次捕获特定版本号,HTML 或 JavaScript,没关系。但它会忽略3.4.2.

<html> 
<body> 
    <span>3.4.2.6</span> 
    3.4.2
</body> 
</html> 

function(){
    var test = "something";
    var version = "3.4.2.6"
}

要检索当前控件所在网页的文本,请WebBrowser尝试在DocumentCompleted事件处理程序中使用以下代码:

var html = webBrowser1.DocumentText;
于 2012-10-18T16:10:45.630 回答