VBA中使用正则表达式处理水文编码
正则表达式在文本处理中有着很重要的作用,水文编码是水情信息传递的有效格式数据,它是以特殊的格式标记的文本,使用正则表达式处理水文编码有着很大的优势,避免陷入处理编码的混乱之中,这里给出一个示例,给出处理水文编码的一个思路。
'================================
' VBA中使用正则表达式处理水文编码
'
'
'================================
Private Sub testRegex()
Dim myRegExp As Object
Dim myMatches As Object
Dim myMatch As Object
Dim i As Integer
Set myRegExp = CreateObject("vbscript.regexp")
myRegExp.Pattern = "(\w{2}|\w{1}) (\d{8}) (\d{8}) (\w{1}) (\b[0-9]*\.?[0-9]+\b) (\w{2}) (\d{1}) NN"
Set myMatches = myRegExp.Execute("AH 12345678 12070800 Z 123.4 ZS 4 NN")
If myMatches.Count >= 1 Then
Set myMatch = myMatches(0)
For i = 0 To myMatch.SubMatches.Count - 1
Debug.Print myMatch.SubMatches(i)
Next
End If
End Sub
参考:RegEx对象的属性和方法
属性
Global:设置或返回一个 Boolean 值, 该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个. 缺省为False.
IgnoreCase:设置或返回一个Boolean值, 指明模式搜索是否区分大小写. 缺省为False.
Pattern:设置或返回被搜索的正则表达式模式.
方法
Test: 对指定的字符串执行一个正则表达式搜索, 并返回一个 Boolean 值指示是否找到匹配的模式.
object.Test(string)
Execute:对指定的字符串执行正则表达式搜索.
object.Execute(string)
Replace:替换在正则表达式查找中找到的文本.
object.Replace(string1, string2) string1是将要进行文本替换的字符串, string2是替换文本字符串.
Matches集合和它所包含的Match对象,只能由上面的Execute方法来返回。
每个Match对象包括三个属性。
FirstIndex – 匹配项中第一个字符的位置
Length – 匹配项的长度
Value – 匹配项的值
当匹配模式中包含分组的话,Match对象还会包含一个SubMatches集合,也就是$1、$2等等。


