小編給大家分享一下VB.NET正則表達(dá)式怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的竹溪網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1、引言
在通常的程序設(shè)計中,對字符串的操作是不可缺少的部分。例如,我們經(jīng)常需要從字符串中尋找特定的部分,或者對某一部分進(jìn)行替換、刪除等等。使用傳統(tǒng)的靜態(tài)字符串操作方法只能查找字符串中固定不變的部分,缺乏靈活性。而用VB.NET正則表達(dá)式則可以規(guī)定待查找字符串的模式,查找同一類型的字符串,例如要在EMAIL格式的字符串(如lzcarl@126.com)中分解出用戶名和服務(wù)器名,可以定義如下的正則表達(dá)式(?
由此可見,作為一種字符串處理方式,正則表達(dá)式的靈活與強(qiáng)大確實是傳統(tǒng)字符串處理方式無法相比的。
2、VB.NET正則表達(dá)式處理類
在VB.NET中使用正則表達(dá)式必須先引入命名空間System.Text.RegularExpressions,該命名空間包含一下七個類:Regex、Match、MatchCollection、GroupCollection、CaptureCollection、Group、Capture。
Regex類表示不可變(只讀)正則表達(dá)式類,設(shè)置待匹配字符串的模式。Match 類表示正則表達(dá)式匹配操作的結(jié)果。MatchCollection 類表示成功的非重疊匹配的序列,即匹配后得到的字符串集合。在正則表達(dá)式中應(yīng)用最多的就是這三個類。
使用正則表達(dá)式類的通用方法是:
首先生成一個Regex類的實例,并在傳入?yún)?shù)中輸入正則表達(dá)式的模式,然后使用Regex類的相應(yīng)方法,如IsMatch(判斷是否
匹配)、Match(返回匹配得到的字符串)等等。
當(dāng)然也可以使用Regex類的共享方法而不實例化Regex類——IsMatch、Match等等(即上述方法的共享版本)獲得所需要的結(jié)果。這種方法適于匹配模式不固定,匹配次數(shù)不多的情況。
接下來給出一個VB.NET正則表達(dá)式的應(yīng)用。
3、時間解析程序
該程序讀取用戶輸入的時間長度字符串(如XX小時XX分鐘XX秒),把它解析,***用秒表示該時間長度(XX秒)。
當(dāng)用戶在文本框中輸入時間值后,點計算后就會在“結(jié)果”后面得到用秒表示的時間值。
該程序首先從文本框中讀入時間值,然后分別查找其中的小時、分鐘、秒部分,在這里就使用了正則表達(dá)式對時間表達(dá)式進(jìn)行解析。如小時數(shù)的正則表達(dá)式可表示為“[0-9]+小時”?!癧0-9]”表示0到9間的任意數(shù)字都可以被匹配,“+”表示該字符可以出現(xiàn)一次或更多,因此“[0-9]+”即可以匹配任意長度整數(shù)(關(guān)于正則表達(dá)式的語法可以參見MSDN的相應(yīng)部分),用這個字符串模式就可以查找出表達(dá)式中的小時部分。在分別匹配得到小時數(shù)、分鐘數(shù)和秒數(shù)后計算得到總的秒數(shù),并顯示在“結(jié)果”后面。
程序包括一個計算時間的正則表達(dá)式工具類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 '時間表達(dá)式
Sub New()
End Sub
'根據(jù)時間文本解析出其中的數(shù)字部分
Private Function getTime(ByVal
timeKind As String) As StringDim timeMatch As Match
Dim time As String
'先從中解析出包含數(shù)字和中文的部分
timeMatch = Regex.Match(exp, timeKind)
If timeMatch.Success = True Then
time = timeMatch.Value
'然后從得到的文本中解析出數(shù)字
Return Regex.Match(time, "[0-9]+").Value
Else
Return "0"
End If
End Function
'根據(jù)傳入的表達(dá)式計算總時間
Public Function getTotalTime(ByVal
_exp As String) As Integerexp = _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窗體設(shè)計器生成代碼省略
Private Sub Button1_Click
(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.ClickSecondTime.Text = regex.
getTotalTime(timeExp.Text).ToString & "秒"
End Sub
End Class
用戶輸入1小時1分鐘1秒后點計算,得到結(jié)果3661秒,證明結(jié)果正確。
以上是“VB.NET正則表達(dá)式怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!