如何使用Regex从文本文件中获取所有表

时间:2011-01-05 10:18:49

标签: c# regex

我有这样结构的文本文件:

Some data  
====================================================================  
   1  !V09            !   -0.544  V   !   -0.900-   -0.250  V   ! gd   
   2  !Vk10           !   -0.582  V   !   -0.900-   -0.250  V   ! gd   
   3  !V11            !   -0.591  V   !   -0.900-   -0.250  V   ! gd 
   4  !V12            !   -0.544  V   !   -0.900-   -0.250  V   ! gd   

Some data  
====================================================================  
   1  !V09            !   -0.544  V   !   -0.900-   -0.250  V   ! gd   
   2  !Vk10           !   -0.582  V   !   -0.900-   -0.250  V   ! gd   
...

如何从所有表中获取内容?每个正则表达式匹配一张表。
更新
总之,我需要匹配中的这些数据:

   1  !V09            !   -0.544  V   !   -0.900-   -0.250  V   ! gd   
   2  !Vk10           !   -0.582  V   !   -0.900-   -0.250  V   ! gd   
   3  !V11            !   -0.591  V   !   -0.900-   -0.250  V   ! gd 
   4  !V12            !   -0.544  V   !   -0.900-   -0.250  V   ! gd   

   1  !V09            !   -0.544  V   !   -0.900-   -0.250  V   ! gd   
   2  !Vk10           !   -0.582  V   !   -0.900-   -0.250  V   ! gd   
...

2 个答案:

答案 0 :(得分:1)

看起来像固定宽度的列。如果您的数据中没有任何空格,请使用String.Split()拆分空格。如果有空格,请使用String.Substring()拉出子字符串,并使用String.RTrim()修剪空格。

请不要在这里使用正则表达式。那太过分了。

答案 1 :(得分:0)

如果您没有固定字段并且split接受正则表达式分隔符,则可以将其写为:

delimeter regex = /^\s*\d\s*!|!/

修改/^\s*\d\s*!|[! ]+/会像这样分开     '' 'V09' '-0.544' 'V' '-0.900-' '-0.250' 'V' 'gd'
第一个字段(数组项)是丢弃的地方。

如果修复了,你可以写一个非常详细的正则表达式:
 (基于样本线)
   1!V09! -0.544 V! -0.900- -0.250 V! gd

/^\s*\d+\s*!\s*(\S*)\s*!\s*(\S*)\s*(\S*)\s*!\s*(\S*)\s*(\S*)\s*(\S*)\s*!\s*(\S*)\s*$/