【发布时间】:2016-11-24 07:42:58
【问题描述】:
我目前正在使用 .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 中提取到记事本文档中...
【问题讨论】:
-
如果可能,您应该直接从 Excel 文件中读取。如果没有,如果您将 Excel 工作表保存或导出为 CSV 文件,您的生活会轻松得多。如果做不到这一点,请尝试使用像 Notepad++(或其他)这样的文本编辑器来插入逗号(将
tab字符替换为“tab”),或者只是附加一个分隔符(,,;,|,无论如何)复制到每一列。 -
您似乎有制表符分隔值。在标签上拆分并检索所需的列怎么样?
-
@Mariano 它们是制表符分隔的,但是,如果有几行在“A”列中有数据,而有些则没有,那不会弄乱我的捕获吗?
-
在您粘贴的文本中,有些行是制表符分隔的,有些则不是。请确认您粘贴的是您正在阅读的确切文本。目前尚不清楚您是想要 H 列中的所有值还是只想要那些与模式匹配的值。请创建一个minimal reproducible example