VBA中使用正则表达式处理水文编码

分类:代码, 博客, 水文 标签:,

正则表达式在文本处理中有着很重要的作用,水文编码是水情信息传递的有效格式数据,它是以特殊的格式标记的文本,使用正则表达式处理水文编码有着很大的优势,避免陷入处理编码的混乱之中,这里给出一个示例,给出处理水文编码的一个思路。

'================================
' VBA中使用正则表达式处理水文编码
'
' http://cnhup.com
'================================
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等等。



分类:代码, 博客, 水文 标签:,

发表评论

You must be logged in to post a comment.