VBScript正则表达式循环

VBScript正则表达式循环,vbscript,coordinate-transformation,Vbscript,Coordinate Transformation,我正在使用带有正则表达式的vbscript来解析一个文件,以便转换一组坐标。这是我的当前代码: Class cFormat Private m_oSB Private Sub Class_Initialize() Set m_oSB = CreateObject("System.Text.StringBuilder") End Sub ' Class_Initialize Public Function formatOne(sFmt, vElm) m_oSB.AppendFormat s

我正在使用带有正则表达式的vbscript来解析一个文件,以便转换一组坐标。这是我的当前代码:

Class cFormat
Private m_oSB
Private Sub Class_Initialize()
  Set m_oSB = CreateObject("System.Text.StringBuilder")
End Sub ' Class_Initialize

Public Function formatOne(sFmt, vElm)
 m_oSB.AppendFormat sFmt, vElm
  formatOne = m_oSB.ToString()
  m_oSB.Length = 0
End Function ' formatOne

Public Function formatArray(sFmt, aElms)
  m_oSB.AppendFormat_4 sFmt, (aElms)
  formatArray = m_oSB.ToString()
  m_oSB.Length = 0
End Function ' formatArray

End Class ' cFormat

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")

Dim oFmt : Set oFmt = New cFormat

Dim oRE  : Set oRE  = New RegExp
oRE.Global    = True
oRE.Multiline = True
'                 0     1        2        3
oRE.Pattern = "^(\d+)d(\d+)'(\d+\.\d+)""([WN])$"

Dim sALL : sALL = goFS.OpenTextFile("C:\...\lat1.txt").ReadAll()
WScript.Echo sALL

WScript.Echo oFmt.formatArray( _
  "|{0,-5}|{1,-11}|{2,-11}|{3,-15}|" _
, Array("LoLa", "Degrees", "Minutes", "Seconds") _
)

 Dim oMTS : Set oMTS = oRE.Execute(sALL)

Dim oMT
For Each oMT In oMTS
  Dim sLoLa    : sLoLa    =      oMT.SubMatches(3)
  Dim nDegrees : nDegrees = CDbl(oMT.SubMatches(0))
  Dim nMinutes : nMinutes = CDbl(oMT.SubMatches(1))
  Dim nSeconds : nSeconds = CDbl(oMT.SubMatches(2))

WScript.Echo oFmt.formatArray( _
      "|{0,-5}|{1,11:N2}|{2,11:N2}|{3,15:N6}|" _
    , Array(sLoLa, nDegrees, nMinutes, nSeconds) _
)
Next
我是以此为基础的

我遇到的问题是,循环中的所有变量都是空的,所以在最后一次回音中我什么也没有得到。我似乎无法确定问题所在,是正则表达式吗?循环?我真的不知道

lat1.txt文件是一个简单的txt文件,包含以下行:

41d3'40.313"N  
38d42'29.295"N  
41d28'13.616"N  
第一个回显语句正在工作。。。问题在最后一个

有人能帮我吗

提前感谢,,
Cláudio

这是你的模式,用

oRE.Pattern = "^(\d+)d(\d+)\'(\d+\.\d+)""(N|W) *$" 
如下所示,秒的输出在我的系统上不正确,但这可能是区域设置

41d3'40.313"N   
38d42'29.295"N   
41d28'13.616"N   

|LoLa |Degrees    |Minutes    |Seconds        |
|N    |      41,00|       3,00|  40.313,000000|
|N    |      38,00|      42,00|  29.295,000000|
|N    |      41,00|      28,00|  13.616,000000|

谢谢!你能告诉我这些模式出了什么问题吗?这样我就能理解错误了。特殊字符,如“需要由\转义”和“你需要捕获结尾空格”,你可以包含$以匹配行的结尾,因此我在一个空格后面加*表示zer0或更多发生。我想西北方向不是问题,但在这种情况下,(N | W)较短