VB.NET正则表达式怎么用

小编给大家分享一下VB.NET正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的竹溪网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

1、引言

在通常的程序设计中,对字符串的操作是不可缺少的部分。例如,我们经常需要从字符串中寻找特定的部分,或者对某一部分进行替换、删除等等。使用传统的静态字符串操作方法只能查找字符串中固定不变的部分,缺乏灵活性。而用VB.NET正则表达式则可以规定待查找字符串的模式,查找同一类型的字符串,例如要在EMAIL格式的字符串(如lzcarl@126.com)中分解出用户名和服务器名,可以定义如下的正则表达式(?[^@]+)@(?.+),然后使用相应的解析器进行解析,得到两个分组user组和host组,user组里存储用户名lzcarl,host组里存放服务器名126.com,而用传统的方法是很难实现这种分解的。

由此可见,作为一种字符串处理方式,正则表达式的灵活与强大确实是传统字符串处理方式无法相比的。

2、VB.NET正则表达式处理类

在VB.NET中使用正则表达式必须先引入命名空间System.Text.RegularExpressions,该命名空间包含一下七个类:Regex、Match、MatchCollection、GroupCollection、CaptureCollection、Group、Capture。

Regex类表示不可变(只读)正则表达式类,设置待匹配字符串的模式。Match 类表示正则表达式匹配操作的结果。MatchCollection 类表示成功的非重叠匹配的序列,即匹配后得到的字符串集合。在正则表达式中应用最多的就是这三个类。

使用正则表达式类的通用方法是:

首先生成一个Regex类的实例,并在传入参数中输入正则表达式的模式,然后使用Regex类的相应方法,如IsMatch(判断是否
匹配)、Match(返回匹配得到的字符串)等等。

当然也可以使用Regex类的共享方法而不实例化Regex类——IsMatch、Match等等(即上述方法的共享版本)获得所需要的结果。这种方法适于匹配模式不固定,匹配次数不多的情况。

接下来给出一个VB.NET正则表达式的应用。

3、时间解析程序

该程序读取用户输入的时间长度字符串(如XX小时XX分钟XX秒),把它解析,***用秒表示该时间长度(XX秒)。

当用户在文本框中输入时间值后,点计算后就会在“结果”后面得到用秒表示的时间值。

该程序首先从文本框中读入时间值,然后分别查找其中的小时、分钟、秒部分,在这里就使用了正则表达式对时间表达式进行解析。如小时数的正则表达式可表示为“[0-9]+小时”。“[0-9]”表示0到9间的任意数字都可以被匹配,“+”表示该字符可以出现一次或更多,因此“[0-9]+”即可以匹配任意长度整数(关于正则表达式的语法可以参见MSDN的相应部分),用这个字符串模式就可以查找出表达式中的小时部分。在分别匹配得到小时数、分钟数和秒数后计算得到总的秒数,并显示在“结果”后面。

程序包括一个计算时间的正则表达式工具类TimeRegex,及Form1界面类。

TimeRegex类代码如下:

  1. Imports System.Text.RegularExpressions  

  2. Public Class TimeRegex  

  3. Private hour As Integer = 0 

  4. Private minute As Integer = 0 

  5. Private second As Integer = 0 

  6. Private totalTime As Integer = 0 

  7. Private exp As String '时间表达式  

  8. Sub New()  

  9. End Sub  

  10. '根据时间文本解析出其中的数字部分  

  11. Private Function getTime(ByVal 
    timeKind As String) As String  

  12. Dim timeMatch As Match  

  13. Dim time As String  

  14. '先从中解析出包含数字和中文的部分  

  15. timeMatch = Regex.Match(exp, timeKind)  

  16. If timeMatch.Success = True Then  

  17. time = timeMatch.Value  

  18. '然后从得到的文本中解析出数字  

  19. Return Regex.Match(time, "[0-9]+").Value  

  20. Else  

  21. Return "0"  

  22. End If  

  23. End Function  

  24. '根据传入的表达式计算总时间  

  25. Public Function getTotalTime(ByVal 
    _exp As String) As Integer  

  26. exp = _exp 

  27. '分别计算出小时,分钟,秒,然后得到总时间  

  28. hour = Integer.Parse(getTime("[0-9]+小时"))  

  29. minute = Integer.Parse(getTime("[0-9]+分钟"))  

  30. second = Integer.Parse(getTime("[0-9]+秒"))  

  31. totalTime = hour * 3600 + minute * 60 + second  

  32. Return totalTime  

  33. End Function  

  34. End Class  

  35. Form1类代码如下:  

  36. Public Class Form1  

  37. Inherits System.Windows.Forms.Form  

  38. Private regex As New TimeRegex 

Windows窗体设计器生成代码省略

  1. Private Sub Button1_Click
    (ByVal sender As System.Object, 
    ByVal e As System.EventArgs) 
    Handles Button1.Click  

  2. SecondTime.Text = regex.
    getTotalTime  

  3. (timeExp.Text).ToString & "秒"  

  4. End Sub  

  5. End Class 

用户输入1小时1分钟1秒后点计算,得到结果3661秒,证明结果正确。

以上是“VB.NET正则表达式怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前标题:VB.NET正则表达式怎么用
当前网址:http://scjbc.cn/article/ijpepp.html

其他资讯