Regex正则表达式之Shared、NextMatch、IsMatch. (二)

来源:互联网 发布:unity3d vr材质 编辑:程序博客网 时间:2024/04/30 02:38

原文地址:http://www.dotnetperls.com/regex-match-vbnet

Shared. 

A Regex object requires time to be created. We can instead share Regex objects, with the shared keyword. A shared Regex object is faster than shared Regex Functions.

共享方法。

一个正则表达式对象需要时间去创造。我们可以用Shared关键字分享regex对象。共享Regex对象的速度比共享的正则表达式方法的速度快。

Therefore:
Storing a Regex as a field in a module or class often results in a speed boost, when Match is called more than once.

因此:
当不止一次调用Match方法时,存储一个正则表达式作为一个模块或类可以加快速度。


Function:
The Match function is an instance function on a Regex object. This program has the same result as the previous program.

功能:

 Match方法变为一个正则表达式实例化后的一个方法。这个程序与以前的程序相同。

下面是代码:

例四:Shared. 方法

VB.NET program that uses Match on Regex field


Imports System.Text.RegularExpressions


Module Module1


    ''' <summary>

    ''' Member field regular expression.

    ''' </summary>

    Private _reg As Regex = New Regex("content/([A-Za-z0-9\-]+)\.aspx$", _

      RegexOptions.IgnoreCase)


    Sub Main()

' The input string.

Dim value As String = "/content/alternate-1.aspx"


' Invoke the Match method.

' ... Use the regex field.

Dim m As Match = _reg.Match(value)


' If successful, write the group.

If (m.Success) Then

    Dim key As String = m.Groups(1).Value

    Console.WriteLine(key)

End If

    End Sub


End Module


Output


alternate-1

就是把原来的Regex.Match方法改为new一个 Regex 

_reg As Regex = New Regex("content/([A-Za-z0-9\-]+)\.aspx$", _

      RegexOptions.IgnoreCase)


Match, NextMatch.

 The Match() Function returns the first match only. But we can call NextMatch() on that returned Match object. This is a match that is found in the text, further on.

Match, NextMatch.方法。

Match方法只会返回第一个匹配值,但我们可以使用NextMatch方法在第一个匹配的返回值中再次匹配。这是一个进一步在文本中找到的匹配项的方法。


Tip:
NextMatch can be called in a loop. This results in behavior similar to the Matches method (which may be easier to use).

提示:
可以在循环中调用NextMatch。此结果在行为类似于匹配方法(可能更容易使用)。

下面是代码:

例五:NextMatch

VB.NET program that uses Match, NextMatch


Imports System.Text.RegularExpressions


Module Module1


    Sub Main()

' Get first match.

Dim match As Match = Regex.Match("4 and 5", "\d")


If match.Success Then

    Console.WriteLine(match.Value)

End If


' Get next match.

match = match.NextMatch()


If match.Success Then

    Console.WriteLine(match.Value)

End If

    End Sub


End Module


Output


4

5

先匹配到4,再匹配到5


IsMatch. 

This returns true if a String matches the regular expression. We get a Boolean that tells us whether a pattern matches. If no other results are needed, IsMatch is useful.

表示是否匹配的布尔值

如果正则表达式与字符串相匹配则返回true.我们用一个布尔值判断标识符是否匹配。如果没有其他需要的结果,IsMatch 就是有用的。


Here:
This program introduces the IsValid Boolean function, which computes the result of the Regex.IsMatch function on its parameter.
Note:
The regular expression pattern indicates any string of lowercase ASCII letters, uppercase ASCII letters, or digits.

在这里
这个函数介绍了有效的布尔函数,计算的结果regex.ismatch功能参数。
注意:
正则表达式模式表示任何字符串的小写字母,大写字母,或数字。

下面是代码:

例六:IsMatch. 

VB.NET program that uses Regex.IsMatch function


Imports System.Text.RegularExpressions


Module Module1

    Function IsValid(ByRef value As String) As Boolean

Return Regex.IsMatch(value,"^[a-zA-Z0-9]*$")

    End Function


    Sub Main()

Console.WriteLine(IsValid("dotnetperls0123"))

Console.WriteLine(IsValid("DotNetPerls"))

Console.WriteLine(IsValid(":-)"))

    End Sub

End Module


Output


True

True

False


[a-zA-Z0-9]意思是范围包括小写字母a至z;大写字母A至Z;数字0至9


0 0