你好我使用Visual Basic 2008 Express Edition
如何在标签之间匹配文字?
例如我有一个字符串:<data>Text</data>more text...
,我如何获得位于Text
内的<data></data>
( .Replace 赢了&#t; t help )。
感谢
我的解决方案:
Public Function parseText(ByVal str As String, ByVal tag As String) As String
Dim match As Match = Regex.Match(str, "<" & tag & "\b[^>]*>(.*?)</" & tag & ">")
If match.Groups.Count = 2 Then
Return match.Groups(1).Value
Else
Return "0"
End If
End Function
我使用这个是因为在我的情况下,标签总是没有id, class, width, href, src, style ....
标签名称(ex:<data><str><text>...
)
答案 0 :(得分:1)
使用HTML Agility Pack解析HTML字符串,然后在结果对象中查询所需的值。
源代码下载包含许多示例项目。
答案 1 :(得分:1)
您可以使用RegularExpressions。
Dim s As String = "<data>Hello world</data>"
Dim match As Match = Regex.Match(s, "<data\b[^>]*>(.*?)</data>")
Dim text As String
If match.Groups.Count = 2 Then
text = match.Groups(1).Value
End If
答案 2 :(得分:0)
这可能对您有所帮助
Dim findtext2 As String = "(?<=<data>)(.*?)(?=</data>)"
Dim myregex2 As String = TextBox1.Text 'Your HTML code
Dim doregex2 As MatchCollection = Regex.Matches(myregex2, findtext2)
Dim matches2 As String = ""
For Each match2 As Match In doregex2
matches2 = matches2 + match2.ToString + Environment.NewLine
Next
MsgBox(matches2) 'Results
别忘了Imports System.Text.RegularExpressions
。
以上代码获取2个字符串之间的所有信息,在本例中为<data>
和</data>
。你可以使用你想要的任何东西(它不需要标记,甚至不需要标记)。