我在包含不同大小的数字的文件中捕获数据,前两行包含日期和时间,如下所示。
我可以毫无问题地提取数据,我已尝试匹配但不捕获这些数据点,但这会导致所有输出死亡。并且据我所知,我不能告诉它跳过数字,因为这将排除一切。
我正在使用 EXPRESSO 搜索的制表符分隔文件是:
8/10/2016 8/10/2016 8/10/2016
15:41:56 15:41:56 15:41:56
100.6 100.6 100.6
237 237 237
239 239 239
238.9 238.9 238.9
63 63 63
66 66 66
65 65 65
136 136 136
134 134 134
135 135 135
我目前用于测试的代码是:
(?:[^\t]*\t*){2}(?<Data>[^\s]*)
输出是(当前捕获第3行,只要输出是我需要的,就可以捕获它们中的任何一行):
8/10/2016
15:41:56
100.6
237
239
238.9
63
66
65
136
134
135
我需要的输出是:
100.6
237
239
238.9
63
66
65
136
134
135
如何确保我捕获的数据不包含前两行的日期和时间?
我正在使用expresso windows应用程序进行测试,在设计模式选项卡中我有:编译,忽略白色,多行和文化不变检查。
我也在命名我的数据集,因为我有其他应用程序调用它...
答案 0 :(得分:0)
你应该在你的正则表达式之前加上先行,以确保你匹配的行只有你想要的字符:
(?=[\d.\t]+$)(?:[^\t]*\t*){2}(?<Data>[^\s]*)
它正在查找仅包含数字,小数和制表符的行。
注意:您还应该清理以下项目。
(?:[^\t]*\t+){2}
:已更改为确保“数据”捕获组之前至少有一个选项卡(?<Data>\S*)
:\S
相当于[^\s]
,但更清晰答案 1 :(得分:0)
看起来您需要在标签后捕获最后一组数字和.
:
\t(?<Data>[\d\.]+)$