正则表达式的常用方法和属性以及应用举例

来源:互联网 发布:ubuntu输入法切换 编辑:程序博客网 时间:2024/04/25 10:06

正则表达式的常用方法和属性
常用方法:

1、Execute 方法
描述:对指定的字符串执行正则表达式搜索。
语法:object.Execute(string)  Execute 方法的语法包括以下几个部分:

object:必需的。总是一个 RegExp 对象的名称。
string:必需的。要在其上执行正则表达式的文本字符串。
说明:正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。Execute 方法返回一个
Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。

2、Test方法

描述:对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。

语法:object.Test(string)

Test 方法的语法包括以下几个部分:

object:必需的。总是一个 RegExp 对象的名称。

string:必需的。要执行正则表达式搜索的文本字符串。
说明:正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False。


常用属性:

1、Global属性

描述:设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。

语法:object.Global [= True | False ]

object 参数总是 RegExp 对象。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 True。

 

2、IgnoreCase属性

描述:设置或返回一个Boolean值,指明模式搜索是否区分大小写。

语法:object.IgnoreCase [= True | False ]

object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 True。

 

3、Pattern属性

描述:设置或返回被搜索的正则表达式模式。 这是一个最重要的属性,我们主要是设置这个属性来实现数据校验的。

语法:object.Pattern [= "searchstring"]

Pattern 属性的语法包含以下几个部分:

object:必需的。总是一个 RegExp 对象变量。

searchstring:可选的。被搜索的正则字符串表达式。它可能包含设置部分表格中的各种正则表达式字符。

 从其他文章转来的补充的应用实例:

最近在用VB6解决一个网页解析的应用,涉及到了正则。如何在VB6中使用正则表达式,这个在MS网站上有介绍,不过介绍的不是很全面。下面结合MS网站的内容和搜索到的东西,自己汇总一下。

  引用了Microsoft VBScript Regular Expressions 5.5 后就可以声明正则相关对象了。主要有三个对象:RegExp、MatchCollection、Match。
  
  

1. RegExp 这是VB使用正则表达式匹配模式的主要对象了。其提供的属性用于设置那些用来比较的传递给 RegExp 实例的字符串的模式。 其提供的方法以确定字符串是否与正则表达式的特定模式相匹配。

  属性:
  Pattern一个字符串,用来定义正则表达式。
  IgnoreCase一个布尔值属性,指示是否必须对一个字符串中的所有可能的匹配进行正则表达式测试。这是MS的解释,有点费解,实际使用中的实例是,如果True,则忽略英文字母大小的匹配,False对大小写进行匹配。
  Global设置一个布尔值或返回一个布尔值,该布尔值指示一个模式是必须匹配整个搜索字符串中的所有搜索项还是只匹配第一个搜索项。
  MultiLine这个MS没有介绍。查了一下资料,设置一个布尔值或返回一个布尔值,是否在串的多行中搜索。如果允许匹配多行文本,则multilinetrue,如果搜索必须在换行时停止,则为false

  方法:
  Execute返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。
  ReplaceMS没有介绍,这是返回一个将匹配字符替换为指定字符的字符串。
  Test返回一个布尔值,该值指示正则表达式是否与字符串成功匹配。

  2. MatchCollection 是集合对象,包含有关匹配字符串的信息,该对象包含每个成功匹配的 Match 对象。

  属性
  Count匹配对象的总数。
  Item匹配对象的索引。

  3. Match 是成功匹配的对象。

  属性:
  FirstIndex匹配对象所匹配字符串的起始位置。
  Length匹配对象所匹配字符串的字符长度。
  SubMatches匹配对象所匹配结果的子项。
  Value匹配对象所匹配的值。

 

 

  相关示例参照MS的网站:http://support.microsoft.com/kb/818802/zh-cn。MS上没有介绍的几个属性和方法的使用,见下面的几个简单示例:1. RegExp的Test方法:

1. RegExp的Test方法:

Function bTest(ByVal s As String, ByVal p As String) As Boolean
    Dim
re
As RegExp
    
Set re =
New RegExp
     re.IgnoreCase
= False '
设置是否匹配大小写
     re.Pattern
= p
     bTest
= re.Test(s)
End Function

Private
Sub Command1_Click()

    
Dim s As
String
    Dim
p As
String
        
     s =
"我的邮箱: test@163.com 。欢迎致电!
"

    '
测试字符串中是否包含数字:
     p
= "/d+
"
    
MsgBox bTest(s, p)

    
'
测试字符串中是否全是由数字组成:
     p
= "^/d+$
"
    
MsgBox bTest(s, p)

    
'
测试字符串中是否有大写字母:
     p
= "[A-Z]+
"
    
MsgBox bTest(s, p)
    
End Sub

2. RegExp的Replace方法:

Function StrReplace(s As String, p As String, r As String) As String
    
    Dim
re
As RegExp
    
Set re =
New RegExp
     re.IgnoreCase
=
True
     re.Global =
True
     re.Pattern
= p
     StrReplace
= re.Replace(s, r)
    
End Function

Private
Sub Command2_Click()

    
Dim s As String     '
字符串
    
Dim p As String     '
正则表达式
    
Dim r As String     '
要替换的字符串

  '
以下代码是替换邮箱地址
     
     s
= "我的E-mail: Test@163.com 。欢迎致电!
"
     p =
"w+@w+.w+
"
     r =
"E_Mail@sohu.net
"
     s
= StrReplace(s, p, r)
     Debug.Print s
    
'
结果:我的E-mail: E_Mail@sohu.net 。欢迎致电!

End Sub
3. Match的SubMatches属性:

Private Sub Command3_Click()

    
Dim re
As RegExp
    
Dim mh
As Match
    
Dim mhs
As MatchCollection
    
Dim inpStr As
String
    
     inpStr =
"我的E-mail: lucky@163.com 。欢迎致电!
"
    Set
re =
New RegExp
     re.Pattern
= "(w+)@(w+).(w+)"         '
同样是匹配地址,注意和上例的不同
    
Set mhs
= re.Execute(inpStr)
    
Set mh = mhs(0)                                      '
只有一个匹配
    
     Debug.Print
"电子邮件地址是: " & mh.Value                '
这里是匹配的内容
     Debug.Print
"用户名是:             " & mh.SubMatches(0)  '
第一个括号中的内容
     Debug.Print
"邮箱是:                 " & mh.SubMatches(1)  '
第二个括号中的内容
     Debug.Print
"域名是:           " & mh.SubMatches(2)  '
第三个括号中的内容
    
End Sub