我想得到如下所示的六个七位数的动态数字:
id="tid_3660328">
并将它们附加到 TextBox1 的末尾。
也就是说,我想得到号码:3660328
从之间:id="tid_
和:>
我的问题是如何在 VB.NET 中做到这一点。我的第一个想法是“正则表达式”,这是我零经验的话题。我很感激帮助。
注意:我想我可以在这里使用代码,但使用我自己的正则表达式:https ://stackoverflow.com/a/9332731
我想得到如下所示的六个七位数的动态数字:
id="tid_3660328">
并将它们附加到 TextBox1 的末尾。
也就是说,我想得到号码:3660328
从之间:id="tid_
和:>
我的问题是如何在 VB.NET 中做到这一点。我的第一个想法是“正则表达式”,这是我零经验的话题。我很感激帮助。
注意:我想我可以在这里使用代码,但使用我自己的正则表达式:https ://stackoverflow.com/a/9332731
这是使用 RegEx 的好地方。
如果你只想找到正好是七位数的数字,你可以使用这个 RegEx 模式:
id="tid_(\d{7})">
或者,如果您不在乎它有多少位,您可以使用以下模式:
id="tid_(\d+)">
以下是该模式的含义:
id="tid_
- 匹配的字符串必须以此文本开头(...)
- 创建一个组,以便我们稍后可以访问匹配的这一部分的值。\d
- 任何数字字符{7}
- 连续七个数字字符">
- 匹配的字符串必须以此文本结尾在第二种模式中,+
替换{7}
just 的 表示一个或多个而不是恰好七个。
在 VB.NET 中,您可以使用 RegEx 模式搜索输入字符串,如下所示:
Public Function FindNumbers(input As String) As List(Of String)
Dim numbers As New List(Of String)()
Dim pattern As String = "id=""tid_(\d{7})"">"
For Each i As Match In Regex.Matches(input, pattern)
numbers.Add(i.Groups(1).Value)
Next
Return numbers
End Function
请注意,在 VB 中的字符串文字中,您必须通过将引号加倍来转义它们。您还会注意到i.Value
,我们使用的是 ,而不是 using i.Groups(1).Value
。原因是i.Value
它将等于整个匹配的字符串(例如id="tid_3660328">
),而组 1 将仅等于数字部分(例如3660328
)。
要在下面回答您的问题,调用此函数并将其输出到 a TextBox
,您可以执行以下操作:
Dim numbers As List(Of String) = FindNumbers("id=""tid_3660328"">")
Text1.Text = String.Join(Environment.NewLine, numbers.ToArray())
考虑以下正则表达式...
(?<=tid_).*?(?=\"\>)
解释: