文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

VB.NET正则表达式怎么用

2023-06-17 18:00

关注

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

1、引言

在通常的程序设计中,对字符串的操作是不可缺少的部分。例如,我们经常需要从字符串中寻找特定的部分,或者对某一部分进行替换、删除等等。使用传统的静态字符串操作方法只能查找字符串中固定不变的部分,缺乏灵活性。而用VB.NET正则表达式则可以规定待查找字符串的模式,查找同一类型的字符串,例如要在EMAIL格式的字符串(如lzcarl@126.com)中分解出用户名和服务器名,可以定义如下的正则表达式(?<user>[^@]+)@(?<host>.+),然后使用相应的解析器进行解析,得到两个分组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类&mdash;&mdash;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正则表达式怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯