VB6.0如何使用正则表达式
2011-03-04 13:15
211 查看
常用正则表达式:http://zhidao.baidu.com/question/26395937.html
转自:http://hereson.javaeye.com/blog/189513
首先要添加引用(工程--引用)Microsoft VBScript Regular Expressions 5.5,然后就可以声明正则相关对象了。主要有三个对象:RegExp、MatchCollection、Match。
1. RegExp
这是VB使用正则表达式匹配模式的主要对象了。其提供的属性用于设置那些用来比较的传递给 RegExp 实例的字符串的模式。 其提供的方法以确定字符串是否与正则表达式的特定模式相匹配。
属性:
Pattern
:一个字符串,用来定义正则表达式。
IgnoreCase
:一个布尔值属性,指示是否必须对一个字符串中的所有可能的匹配进行正则表达式测试。这是MS的解释,有点费解,实际使用中的实例是,如果True,则忽略英文字母大小的匹配,False对大小写进行匹配。
Global
:设置一个布尔值或返回一个布尔值,该布尔值指示一个模式是必须匹配整个搜索字符串中的所有搜索项还是只匹配第一个搜索项。
MultiLine
:这个MS没有介绍。查了一下资料,设置一个布尔值或返回一个布尔值,是否在串的多行中搜索。如果允许匹配多行文本,则multiline为true,如果搜索必须在换行时停止,则为false 。
方法:
Execute
:返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。
Replace
:MS没有介绍,这是返回一个将匹配字符替换为指定字符的字符串。
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
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
re
As
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
re
=
New
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.IgnoreCase
=
False
'
设置是否匹配大小写
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Pattern
=
p
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bTest
=
re.Test(s)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Function
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private
Sub
Command1_Click()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
s
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
p
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
s
=
"
我的邮箱: test@163.com 。欢迎致电!
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
测试字符串中是否包含数字:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"/
d+
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox
bTest(s, p)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
测试字符串中是否全是由数字组成:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"
^/d+$
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox
bTest(s, p)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
测试字符串中是否有大写字母:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"
[A-Z]+
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox
bTest(s, p)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
2. RegExp的Replace方法:
Function
StrReplace(s
As
String
, p
As
String
, r
As
String
)
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
re
As
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
re
=
New
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.IgnoreCase
=
True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Global
=
True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Pattern
=
p
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
StrReplace
=
re.Replace(s, r)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Function
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private
Sub
Command2_Click()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
s
As
String
'
字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
p
As
String
'
正则表达式
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
r
As
String
'
要替换的字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
以下代码是替换邮箱地址
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
s
=
"
我的E-mail: Test@163.com 。欢迎致电!
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"
w+@w+.w+
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
r
=
"
E_Mail@sohu.net
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
s
=
StrReplace(s, p, r)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print s
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
结果:我的E-mail: E_Mail@sohu.net 。欢迎致电!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
3. Match的SubMatches属性:
Private
Sub
Command3_Click()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
re
As
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
mh
As
Match
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
mhs
As
MatchCollection
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
inpStr
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
inpStr
=
"
我的E-mail: lucky@163.com 。欢迎致电!
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
re
=
New
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Pattern
=
"
(w+)@(w+).(w+)
"
'
同样是匹配地址,注意和上例的不同
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
mhs
=
re.Execute(inpStr)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
mh
=
mhs(
0
)
'
只有一个匹配
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
电子邮件地址是:
"
&
mh.Value
'
这里是匹配的内容
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
用户名是:
"
&
mh.SubMatches(
0
)
'
第一个括号中的内容
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
邮箱是:
"
&
mh.SubMatches(
1
)
'
第二个括号中的内容
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
域名是:
"
&
mh.SubMatches(
2
)
'
第三个括号中的内容
转自:http://hereson.javaeye.com/blog/189513
首先要添加引用(工程--引用)Microsoft VBScript Regular Expressions 5.5,然后就可以声明正则相关对象了。主要有三个对象:RegExp、MatchCollection、Match。
1. RegExp
这是VB使用正则表达式匹配模式的主要对象了。其提供的属性用于设置那些用来比较的传递给 RegExp 实例的字符串的模式。 其提供的方法以确定字符串是否与正则表达式的特定模式相匹配。
属性:
Pattern
:一个字符串,用来定义正则表达式。
IgnoreCase
:一个布尔值属性,指示是否必须对一个字符串中的所有可能的匹配进行正则表达式测试。这是MS的解释,有点费解,实际使用中的实例是,如果True,则忽略英文字母大小的匹配,False对大小写进行匹配。
Global
:设置一个布尔值或返回一个布尔值,该布尔值指示一个模式是必须匹配整个搜索字符串中的所有搜索项还是只匹配第一个搜索项。
MultiLine
:这个MS没有介绍。查了一下资料,设置一个布尔值或返回一个布尔值,是否在串的多行中搜索。如果允许匹配多行文本,则multiline为true,如果搜索必须在换行时停止,则为false 。
方法:
Execute
:返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。
Replace
:MS没有介绍,这是返回一个将匹配字符替换为指定字符的字符串。
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
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
re
As
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
re
=
New
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.IgnoreCase
=
False
'
设置是否匹配大小写
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Pattern
=
p
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bTest
=
re.Test(s)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Function
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private
Sub
Command1_Click()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
s
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
p
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
s
=
"
我的邮箱: test@163.com 。欢迎致电!
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
测试字符串中是否包含数字:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"/
d+
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox
bTest(s, p)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
测试字符串中是否全是由数字组成:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"
^/d+$
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox
bTest(s, p)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
测试字符串中是否有大写字母:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"
[A-Z]+
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox
bTest(s, p)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
2. RegExp的Replace方法:
Function
StrReplace(s
As
String
, p
As
String
, r
As
String
)
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
re
As
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
re
=
New
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.IgnoreCase
=
True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Global
=
True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Pattern
=
p
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
StrReplace
=
re.Replace(s, r)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Function
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private
Sub
Command2_Click()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
s
As
String
'
字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
p
As
String
'
正则表达式
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
r
As
String
'
要替换的字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
以下代码是替换邮箱地址
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
s
=
"
我的E-mail: Test@163.com 。欢迎致电!
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
p
=
"
w+@w+.w+
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
r
=
"
E_Mail@sohu.net
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
s
=
StrReplace(s, p, r)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print s
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
'
结果:我的E-mail: E_Mail@sohu.net 。欢迎致电!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
3. Match的SubMatches属性:
Private
Sub
Command3_Click()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
re
As
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
mh
As
Match
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
mhs
As
MatchCollection
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim
inpStr
As
String
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
inpStr
=
"
我的E-mail: lucky@163.com 。欢迎致电!
"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
re
=
New
RegExp
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
re.Pattern
=
"
(w+)@(w+).(w+)
"
'
同样是匹配地址,注意和上例的不同
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
mhs
=
re.Execute(inpStr)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Set
mh
=
mhs(
0
)
'
只有一个匹配
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
电子邮件地址是:
"
&
mh.Value
'
这里是匹配的内容
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
用户名是:
"
&
mh.SubMatches(
0
)
'
第一个括号中的内容
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
邮箱是:
"
&
mh.SubMatches(
1
)
'
第二个括号中的内容
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print
"
域名是:
"
&
mh.SubMatches(
2
)
'
第三个括号中的内容
相关文章推荐
- VB6.0如何使用正则表达式
- VB6.0如何使用正则表达式
- 在linux下,如何在C语言中使用正则表达式
- 如何在UltraEdit中使用正则表达式删除空格
- awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串
- C#中如何使用正则表达式
- c#.net如何使用正则表达式
- 如何使用正则表达式写出高效率的GREP
- 正则表达式在c# 与js 中如何使用
- python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
- 如何使用 awk 和正则表达式过滤文本或文件中的字符串
- 如何使用java正则表达式去除掉字符串前面的空格
- 如何在grep和sed命令中使用扩展的正则表达式
- 非贪婪匹配:如何使用正则表达式碰到到第一个匹配到的字符串就停止
- 如何在UltraEdit中使用正则表达式删除空格
- python中如何使用正则表达式的集合字符示例
- 如何使用正则表达式进行QQ校友的数据采集
- 如何正确使用带有"g"标记的javascript正则表达式
- js中使用正则表达式,全局匹配时如何取到匹配串?
- 使用JavaScript正则表达式如何去掉双引号