为什么此正则表达式在我的vb.net代码中不起作用?

时间:2019-12-13 13:41:23

标签: regex vb.net

我有一些奇怪的问题要处理。我使用此网站https://regex101.com/测试了结果字符串。 我需要在访问者访问我的网站时获得访问者用户代理字符串,然后创建一个小型应用程序以将其完成到我的vb.net代码中。

它抓取的html代码是这样的:

<body>
<p id="ip">ip: 77.111.247.210</p>
<p id="host">host: 77.111.247.210.dynamic.orange.fr</p>
<p id="port">port: 18516</p>
<p id="ua">ua: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36</p>
<p id="lang">lang: en-US,en;q=0.9</p>
<p id="mime">mime: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3</p>
<p id="encoding">encoding: gzip, deflate</p>

我使用的模式是这样的:(?<=ua:)([^0-9a-zA-Z].+)(?=<) 它可以在regex测试器网站上运行,但在我尝试的vb.net代码中却没有返回任何内容。

 Dim r3 As Regex = New Regex("(?<=ua:)([^0-9a-zA-Z].+)(?=<)")
 Dim m3 = r3.Match(source)
 _ua = m3.Value

我可以提取除useragent'ua:'以外的所有参数,这是不可能的。 我刚刚对其进行了编辑,并且我已经测试过可以添加到我的WebRequest useragent中,但是我输入了:the_request.UserAgent = "default",然后猜猜是什么..?它可以工作,但是我提取的不是正确的用户代理,而是请求用户代理“默认”,大声笑如何解决?

感谢帮助。

1 个答案:

答案 0 :(得分:0)

我刚刚发现,用webrequest检查useragent是不可能的,除非我们不在请求本身中使用useragent。因此,这就是为什么在没有useragent的情况下使用请求时我没有得到任何字符串的原因。