RegEx .NET无需替换

时间:2013-12-31 16:19:44

标签: regex vb.net

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim client As WebClient = New WebClient()
    Label1.Text = client.DownloadString("http://localhost:81/test/index.html")

    Label2.Text = Label1.Text
    Dim input As String = Label1.Text
    Dim output As String = Regex.Replace(input, "<body>|</body>|<html>|</html>", "")

    Label2.Text = output
End Sub

我正在下载网站并存储在label1中。将其转换为label2(用于测试),因为我需要用文本替换label1。

HTML文件(测试文件)。我需要在链接之前或之前创建没有任何新行的链接。

<html>
<body>
http://www.google.com
</body>
</html>

我怎样才能显示

http://www.google.com
标签中的

?尝试用Nothing替换它并且它给出了错误。

2 个答案:

答案 0 :(得分:0)

您是否尝试过String.empty或vbNullString(string.empty会更好,因为它是.NET Native,我认为vb常量只是包装器。)

答案 1 :(得分:0)

假设output的当前值是在其之前和之后的两个new line个字符(或其他无关的空格)的链接:

\n
\n
http://www.google.com
\n
\n

然后正则表达式按预期运行(你没有用空格做任何事情,所以正则表达式忽略它。)

只需在.Trim的末尾添加.Replace即可消除任意一方的空白:

Dim output As String = Regex.Replace(input, "<body>|</body>|<html>|</html>", "").Trim

另外,您的正则表达式不适用于比测试页面复杂的网页。如果您希望在实际网页上尝试此操作,最好的选择可能是使用设计用于捕获链接周围的分隔标记的正则表达式,然后使用另一个从第一个结果中获取链接的正则表达式。您还可以尝试将检索到的页面实例化为HTMLDocument,它应该为您处理实际的解析,此时从VB.Net代码隐藏的DOM导航成为可能。

总的来说,通常有更好的方法从HTML(而不是使用正则表达式)中提取您可能想要在项目/用例气球和this之前调查的信息。 :)