并将它们附加到 TextBox1 的末尾。 换句话说,我想得到这个数字:3660328 从中间:id="tid_ 和:“> 我的-6ren">
gpt4 book ai didi

正则表达式获取两个字符串之间的文本

转载 作者:行者123 更新时间:2023-12-02 01:08:23 24 4
gpt4 key购买 nike

我想得到如下所示的动态 6 七位数字:

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} 只是表示一个或多个,而不是正好是七个。

在 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,而是 i.Groups(1).Value。原因是 i.Value 将等于整个匹配的字符串(例如 id="tid_3660328">),而第 1 组将只等于数字部分(例如 3660328).

更新

要回答您下面的问题,调用此函数并将其输出到 TextBox,您可以这样做:

Dim numbers As List(Of String) = FindNumbers("id=""tid_3660328"">")
Text1.Text = String.Join(Environment.NewLine, numbers.ToArray())

关于正则表达式获取两个字符串之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com