我想获得动态六七位数字,如下所示:
id="tid_3660328">
并将它们附加到TextBox1的末尾。
换句话说,我想得到这个号码:3660328
从中间:id =“tid _
和:“>
我的问题是我如何在VB.NET中做到这一点。我的第一个想法是“正则表达式”,这是一个我没有经验的话题。我很感激帮助。
注意:我以为我可以在这里使用代码但是使用我自己的正则表达式:https://stackoverflow.com/a/9332731
答案 0 :(得分:4)
这是使用RegEx的好地方。
如果您只想查找正好七位数的数字,可以使用此RegEx模式:
id="tid_(\d{7})">
或者,如果你不关心它的位数,你可以使用这种模式:
id="tid_(\d+)">
这是模式的含义:
id="tid_
- 匹配的字符串必须以此文字开头(...)
- 创建一个组,以便我们以后可以访问该部分匹配的值。\d
- 任何数字数字{7}
- 连续七个数字字符">
- 匹配的字符串必须以此文本结尾在第二种模式中,取代+
的{{1}}只表示一个或多个而不是七个。
在VB.NET中,您可以使用RegEx模式搜索输入字符串,如下所示:
{7}
请注意,在VB中的字符串文字中,您必须通过加倍来转义引号。您还会注意到,我们使用的是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
,而不是i.Value
。原因是i.Groups(1).Value
将等于整个匹配的字符串(例如i.Value
),而组1将仅等于数字部分(例如id="tid_3660328">
)。
要回答下面的问题,要调用此函数并将其输出到3660328
,您可以执行以下操作:
TextBox
答案 1 :(得分:1)
考虑以下Regex ......
(?<=tid_).*?(?=\"\>)
说明: