我目前正在使用.net版本的正则表达式(使用Expresso)捕获数据,我有一些代码适用于很多列,但不适用于某些列。我认为问题是在某些情况下,其中一个开始列是空的:
A B C D E F G H I J K L M N O P Q R S T
USER 1 USER 2 USER 3 USER 4 USER 5 General General General General M.O.L.E.(r) M.O.L.E.(r) Oven Oven Oven AMB Oven AMB Oven AMB
one 14 Zone 14 Zone 14 Zone 14 Zone 14 Zone 14 Zone 15 Zone 15 Zone 15 Zone 15 Zone 15 Zone 15 Zone 15 Zone 16 Zone 16 Zone 16 Zone 16 Zone 16 Zone 16
All All All All All All All All All All All All All All
Pass (Overnrider) NJH 12/7/2015 SMG20-27527 (OvenRider) 12/07/2015 07:59:16 OR_FCT_ENTRY_000561 34.0 4.863 15 101.17 24.4 23.9
Pass (Rework) NJH 11/25/2015 SMG20-27641 (Rework) 11/25/2015 11:46:43 OR_FCT_ENTRY_000560 31.0 4.863 15 100.60 21.7 21.1
Passed (Rework Mole) RH 11/17/2015 SMG20-27641 (Rework) 11/17/2015 18:35:48 OR_FCT_ENTRY_000558 33.0 4.893 15 100.60 23.3
Pass (Overnrider) NJH 12/7/2015 SMG20-27527 (OvenRider) 12/07/2015 07:59:16 OR_FCT_ENTRY_000561 34.0 4.863 15 101.17 24.4 23.9
Pass (Rework) NJH 11/25/2015 SMG20-27641 (Rework) 11/25/2015 11:46:43 OR_FCT_ENTRY_000560 31.0 4.863 15 100.60 21.7 21.1
Passed (Rework Mole) RH 11/17/2015 SMG20-27641 (Rework) 11/17/2015 18:35:48 OR_FCT_ENTRY_000558 33.0 4.893 15 100.60 23.3
我正在使用的正则表达式是:
^(?:([^\s\n]+)\s+){13}
结果是:
101.17
100.6
15
100.6
4.893
如何确保我捕获的数据始终位于100.XX行中,如下所示(第H行)?
101.17
100.6
101.7
100.6
100.6
仅供参考,这是从excel转到记事本文件......
答案 0 :(得分:0)
不存在空列,一些列可能包含空格。具体来说,(Rework Mole)
应该是一个字段,但是你的正则表达式将它视为两个字段。您需要查找以下两种情况之一:括在括号中的字段或一系列非空白字符。这个正则表达式产生了预期的结果:
^(?:(\([^()]+\)|\S+) +){13}
请注意\s
匹配所有类型的空格,包括换行符。分隔符只是空格,所以最好只匹配那些。