我怎么知道"/"前面的第一个字符是什么?asp.net vb.net



我有一个这样的字符串:

Dim temp As String = "Batch 634239100A/45 pcs booked out by vladut moraru on 10/15/2015"

Dim temp As String = "Batch 322.3/4 pcs booked out by vladut moraru on 10/15/2015"

Dim temp As String = "Batch 322/3/4 pcs booked out by vladut moraru on 10/15/2015"

我想显示322/3/

Batch is : 322/3/
PCS is : 4

我只想显示:322/3/的所有字符串

我以为我会找到322/3/4,然后在最后一个/之后给它分裂,并从/之前找到值,但是如何?

最简单的方法是使用regulareexpression,但是这样做是有限制的,特别是当您还在字符串中包含日期时。

如果数字总是NNN/NNN/NN 的格式,它们将在任何日期之前出现,那么这将工作…

Dim regExMatch As System.Text.RegularExpressions.Match
regExMatch = System.Text.RegularExpressions.Regex.Match(myString, "(d{3}/d{3})/(d{2})")
If regExMatch.Success Then
    Dim batch As String = regExMatch.Groups(1).Value
    Dim pcs As String = regExMatch.Groups(2).Value
End If

正则表达式(d{3}/d{3})/(d{2})分解为…

  • (创建捕获组
  • d{3}查找3位数字(0-9)
  • /查找该字符
  • d{3}查找3个数字(0-9)
  • )关闭并存储捕获组
  • /查找字符
  • (创建捕获组
  • d{2}查找2位数字(0-9)
  • )关闭并存储捕获组

(注意,在ASP中。. NET是否不需要转义/字符…在大多数其他正则表达式解析器中,它是必需的。)


如果你不需要pcs被检索,然后删除第二个捕获组(所以它看起来像(d{3}/d{3})/d{2})…但是你还需要删除regExMatch.Groups(2).Value,否则你会得到一个异常。


如果你需要检查一个可变的数字数,那么使用d{3,5}的格式,这意味着最少3个,最多5个数字。


UPDATE -基于op提供的新信息。

使用这个表达式:"batch (.+)/(d+) pcs"

regExMatch = System.Text.RegularExpressions.Regex.Match(myString, "batch (.+)/(d+) pcs", 
               System.Text.RegularExpressions.RegexOptions.IgnoreCase)

最新更新