2010-02-18 59 views
0

需要帮助定义表达式以捕获定义线条上每行的四个数字。帮助将RegEx定义为从INI文件中捕获线条定义

59.684 -4.251 59.575 -5.576 
59.575 -5.576 59.437 -6.899 
59.437 -6.899 59.27 -8.218 
-7.346 23.196 -7.409 23.233 
-7.409 23.233 -7.46 23.285 
-7.46 23.285 -7.495 23.349 
-7.495 23.349 -7.51 23.42 
9.172 39.362 9.134 39 
9.134 39.288 9.087 39.219 
9.087 39.219 9.032 39.155 
9.032 39.155 8.97 39.099 
8.97 39.099 8.901 39 

感谢,

戴夫

回答

0

使用regex.matches通过返回的MatchColection字符串"(\S*[\d\.]+)"迭代和值将有你想要的字符串。

+0

要捕捉线上的所有四个条目,我编辑了你的这一行。 (\ S * [\ d \。] +)\ S {1,3}(\ S * [\ d \。] +)\ S {1,3}(\ S * [\ d \。] +) \ s {1,3}(\ S * [\ d \。] +)\ b“ 谢谢! – user38349 2010-02-18 15:05:33

1
(?<column1>\S+) (?<column2>\S+) (?<column3>\S+) (?<column4>\S+) 

您可以在每行上运行该表达式,并且它会将空格之间的值提取到四个命名的捕获组中。

<columnN>部分是您正在捕获的组的名称。您将它们称为column1,column2等。

1

您不需要正则表达式。未经测试:

Using sr As New StreamReader("myFile.txt") 
    Do 
     Dim line = sr.ReadLine() 
     If line Is Nothing Then Exit Do 

     Dim values = line.Split() 
     Dim x1 = Double.Parse(values(0), CultureInfo.InvariantCulture) 
     Dim y1 = Double.Parse(values(1), CultureInfo.InvariantCulture) 
     Dim x2 = Double.Parse(values(2), CultureInfo.InvariantCulture) 
     Dim y2 = Double.Parse(values(3), CultureInfo.InvariantCulture) 

     ' do something with these values ' 

    Loop 
End Using