本文分步介绍了如何创建正则表达式及如何使用正则表达式确定字符串是否匹配特定的模式。使用正则表达式,您可以方便地对字符串进行语法分析,并可将字符串与特定的模式进行匹配。如果您使用了 Microsoft VBScript Regular Expressions 5.5 库中的可用对象,则可以将一个字符串与一个特定的模式进行比较,使用一种模式替换另一种模式,或者只检索一个已格式化的字符串的某些部分。本文介绍了如何构造一种模式来对包含同一模式的多个实例的字符串进行分析。
返回页首
要求
下面的列表介绍了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:
• | Microsoft Visual Basic 6.0 |
本文假定您熟悉下列主题:
• | Visual Basic 6.0 |
• | 正则表达式语法 |
返回页首
使用正则表达式匹配模式
在 Visual Basic 6.0 中,
RegExp 对象使用正则表达式匹配模式。下面是
RegExp 提供的属性。这些属性用于设置那些用来比较传递给
RegExp 实例的字符串的模式。
• | Pattern:一个字符串,用来定义正则表达式。 |
• | IgnoreCase:一个布尔值属性,指示是否必须对一个字符串中的所有可能的匹配进行正则表达式测试。 |
• | Global:设置一个布尔值或返回一个布尔值,该布尔值指示一个模式是必须匹配整个搜索字符串中的所有搜索项还是只匹配第一个搜索项。 |
• | RegExp:提供以下方法以确定字符串是否与正则表达式的特定模式相匹配:
• | Test:返回一个布尔值,该值指示正则表达式是否与字符串成功匹配。 | • | Execute:返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。 |
|
要将一个字符串与一个正则表达式匹配,请按照以下步骤操作:
1. | 使用“RegExp”对象的“Pattern”方法设置正则表达式。 |
2. | 获取该字符串以使用该模式进行检验。 |
3. | 将“RegExp”对象的“IgnoreCase”属性设置为 True。 |
4. | 将您在第 2 步中获取的字符串作为一个参数传递给“RegExp”对象的“Execute”方法。 |
5. | 将“Execute”方法的返回值指定给“MatchCollection”对象。
“MatchCollection”对象包含有关匹配字符串的信息。
|
注意 您还可以使用
Test 方法来检查字符串是否匹配特定的正则表达式。
返回页首
分步示例
1. | 启动 Microsoft Visual Basic 6.0。 |
2. | 在“文件”菜单上,单击“新建项目”。 |
3. | 在“新建项目”对话框中,单击“Standard Exe”,然后单击“确定”。
默认情况下将创建 Form1。 |
4. | 在“项目”菜单上单击“引用”。 |
5. | 双击“Microsoft VBScript Regular Expressions 5.5”,然后单击“确定”。 |
6. | 在工具箱中,双击“命令按钮”。
默认情况下,“Command1”将添加到窗体中。 |
7. | 双击“Command1”以打开代码窗口。 |
8. | 将下面的代码粘贴到“Command1_Click”事件处理程序:MsgBox(TestRegExp("is.", "IS1 is2 IS3 is4")) 注意 这个示例中将对照“IS1 is2 IS3 is4”字符串检查 is. 模式。您可以将句点这一特殊字符(.)用作通配符,这样,搜索模式就能够多匹配并多显示一个字符。如果您在搜索模式中添加两个句点,您会看到两个其他字符。如果您不使用任何句点,您只会看到搜索模式。 |
9. | 将以下函数添加到“Command1_click”事件处理程序后:Function TestRegExp(myPattern As String, myString As String)
'Create objects.
Dim objRegExp As RegExp
Dim objMatch As Match
Dim colMatches As MatchCollection
Dim RetStr As String
' Create a regular expression object.
Set objRegExp = New RegExp
'Set the pattern by using the Pattern property.
objRegExp.Pattern = myPattern
' Set Case Insensitivity.
objRegExp.IgnoreCase = True
'Set global applicability.
objRegExp.Global = True
'Test whether the String can be compared.
If (objRegExp.Test(myString) = True) Then
'Get the matches.
Set colMatches = objRegExp.Execute(myString) ' Execute search.
For Each objMatch In colMatches ' Iterate Matches collection.
RetStr = RetStr & "Match found at position "
RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '"
RetStr = RetStr & objMatch.Value & "'." & vbCrLf
Next
Else
RetStr = "String Matching Failed"
End If
TestRegExp = RetStr
End Function
|
10. | 在“运行”菜单上,单击“启动”来运行该应用程序。 |
11. | 单击“Command1”。
此时将出现一个消息框,该消息显示 IS1 is2 IS3 is4 字符串中的所有 is 匹配项。 |
返回页首