微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址: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

原文地址:https://www.jb51.cc/regex/359978.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐