温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

VB.NET正则表达式怎么用

发布时间:2021-12-02 13:57:47 阅读:665 作者:小新 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

小编给大家分享一下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类代码如下:

Imports System.Text.RegularExpressions  Public Class TimeRegex  Private hour As Integer = 0 Private minute As Integer = 0 Private second As Integer = 0 Private totalTime As Integer = 0 Private exp As String '时间表达式  Sub New()  End Sub  '根据时间文本解析出其中的数字部分  Private Function getTime(ByVal timeKind As String) As String  Dim timeMatch As Match  Dim time As String  '先从中解析出包含数字和中文的部分  timeMatch = Regex.Match(exp, timeKind)  If timeMatch.Success = True Then  time = timeMatch.Value  '然后从得到的文本中解析出数字  Return Regex.Match(time, "[0-9]+").Value  Else  Return "0"  End If  End Function  '根据传入的表达式计算总时间  Public Function getTotalTime(ByVal _exp As String) As Integer  exp = _exp '分别计算出小时,分钟,秒,然后得到总时间  hour = Integer.Parse(getTime("[0-9]+小时"))  minute = Integer.Parse(getTime("[0-9]+分钟"))  second = Integer.Parse(getTime("[0-9]+秒"))  totalTime = hour * 3600 + minute * 60 + second  Return totalTime  End Function  End Class  Form1类代码如下:  Public Class Form1  Inherits System.Windows.Forms.Form  Private regex As New TimeRegex 

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

Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click  SecondTime.Text = regex.getTotalTime  (timeExp.Text).ToString & "秒"  End Sub  End Class 

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

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

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×