Regex 正则表达式获取两个字符串之间的文本
我想得到如下所示的动态六位七位数字:Regex 正则表达式获取两个字符串之间的文本,regex,vb.net,.net-4.0,Regex,Vb.net,.net 4.0,我想得到如下所示的动态六位七位数字: id="tid_3660328"> 并将它们附加到TextBox1的末尾 换句话说,我想得到号码:3660328 从:id=“tid_ 和:“> 我的问题是如何在VB.NET中实现这一点。我的第一个想法是“regex”,这是一个我没有任何经验的话题。我感谢你的帮助 注意:我想我可以在这里使用代码,但是使用我自己的正则表达式:考虑下面的正则表达式 (?<=tid_).*?(?=\"\>) (?):匹配后缀“>但将其从捕获中排除 这是使
id="tid_3660328">
并将它们附加到TextBox1的末尾
换句话说,我想得到号码:3660328 从:id=“tid_ 和:“>
我的问题是如何在VB.NET中实现这一点。我的第一个想法是“regex”,这是一个我没有任何经验的话题。我感谢你的帮助
注意:我想我可以在这里使用代码,但是使用我自己的正则表达式:考虑下面的正则表达式
(?<=tid_).*?(?=\"\>)
(?):匹配后缀“>但将其从捕获中排除
这是使用正则表达式的好地方
如果您只想查找正好是七位数的数字,可以使用以下正则表达式模式:
id=“tid(\d{7})”>
或者,如果您不在乎它有多少位数,您可以使用以下模式:
id=“tid”(\d+)”>
以下是模式的含义:
id=“tid”
-匹配字符串必须以此文本开头
(…)
-创建一个组,以便我们以后可以仅访问匹配的这一部分的值
\d
-任何数字字符
{7}
-一行七个数字字符
“>
-匹配字符串必须以此文本结尾
在第二个模式中,取代{7}
的+
仅表示一个或多个而不是七个
在VB.NET中,可以使用正则表达式模式搜索输入字符串,如下所示:
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
Dim numbers As List(Of String) = FindNumbers("id=""tid_3660328"">")
Text1.Text = String.Join(Environment.NewLine, numbers.ToArray())
请注意,在VB中的字符串文字中,您必须通过将引号加倍来转义引号。您还将注意到,我们使用的不是i.Value
,而是i.Groups(1.Value
。原因是i.Value
将等于整个匹配字符串(例如id=“tid_3660328”
),而第1组仅等于数字部分(例如,3660328
)
更新
要回答下面的问题,要调用此函数并将其输出到文本框
,可以执行以下操作:
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
Dim numbers As List(Of String) = FindNumbers("id=""tid_3660328"">")
Text1.Text = String.Join(Environment.NewLine, numbers.ToArray())
有你需要的一切。数字总是六位数吗?例如,在你的例子中,它是七位数。所以我做了一些研究来理解正则表达式:So()是有条件的组,“*?”是通配符,对吗?是什么?在上面的答案中添加了解释。如果你需要更多信息,请告诉我。此外,您可以使用expresso之类的工具来构造新的正则表达式并理解现有的正则表达式。您的正则表达式的功能与Steven的不同,还是它们的功能相同?如果是后者,我会有点困惑。Stevan的正则表达式模式也会捕获前缀tid_z(and)“>谢谢你的帮助。我该如何调用此函数并将结果导出到文本框?@KelvinZhang我更新了我的答案,以展示如何做到这一点。最后,我想将您的代码应用到一个新的正则表达式:---我尝试了“Dim postpattern As String=”“”但没有成功(注意,我已将“pattern”更改为“postpattern”,以防止歧义)。我的正则表达式有什么问题吗?