gpt4 book ai didi

java - 如何使用正则表达式在文本文件中查找一系列数据?

转载 作者:行者123 更新时间:2023-11-30 08:36:24 25 4
gpt4 key购买 nike

我有一个包含如下系列的文本文件:

Lots of textLots of textLots of textLots of textLots of textLots of textLots
of textLots of textLots of textLots of textLots of textLots of textLots of
textLots of textLots of textLots of textLots of textLots of textLots of
textLots of text

Wave amplitude (mean, 3.0 & 7.0 above LES) (mmHg)
43-152
35.9
N/A
N/A
N/A
43.5
21.9
N/A
37.3
N/A
40.9
N/A

Wave duration (mean at 3.0 & 7.0 above LES) (sec)
2.7-5.4
2.5
N/A
N/A
N/A
2.2
3.0
N/A
2.2
N/A
2.6
N/A

Onset velocity (between 11.0 & 3.0 above LES) (cm/s)
2.8-6.3
2.2
N/A
N/A
N/A
2.5
1.0
N/A
2.5
N/A
2.7
N/A

Some other textSome other textSome other textSome other textSome other textSome
other textSome other textSome other textSome other textSome other textSome
other textSome other textSome other textSome other textSome other textSome
other text

规则是:

  1. 第一行总是在某处包含一个括号,而在其他地方找不到。

  2. 每个数字系列(或 N/A 系列)的末尾总是有一个空行

  3. 这些值都是数字(带或不带小数点)或 N/A。

  4. 我不想捕获每个 block 标题后的第一个数字(通常也包含 - 或 <)

我想将标题和随后的数字捕获到一个 arrayList 中。

因此,第一个示例的预期输出为

[Wave amplitude (mean, 3.0 & 7.0 above LES  (mmHg),35.9,N/A,N/A,N/A,43.5,21.9,N/A,37.3,N/A,40.9,N/A]

我被困在可以让我实现这一目标的正则表达式上。因为我想提取的文本位于一个更大的文本文件中,所以我想我需要使用正则表达式来提取我感兴趣的部分。我想另一种方法是只选择整个部分的开始和结束部分 I我很感兴趣,但它仍然依赖于一些正则表达式,我认为这样做的模式会更复杂。

最佳答案

如果您真的想使用正则表达式来解析它,您可以这样做:

String pattern = "(?<desc>.*\\(.*\\).*)\n.*-.*\n(?<data>(?:N/A\n|\\d*\\.\\d*\n)+)";

String rawData = new String(Files.readAllBytes(Paths.get("indata.txt")));
Matcher seriesMatcher = Pattern.compile(pattern).matcher(rawData);
while(seriesMatcher.find()) {
List<String> series = new ArrayList<>();
series.add(seriesMatcher.group("desc").trim());
series.addAll(asList(seriesMatcher.group("data").split("\n")));
System.out.println(series);
}

正则表达式由几个部分组成:

(?<desc>.*\\(.*\\).*)\n.*-.*\n(?<data>(?:N/A\n|\\d*\\.\\d*\n)+)
--------------------- ------- ---------------------------------
description ignore data

description = 一行包含一对匹配的括号。
ignore = 带破折号的行,将被忽略。
data = 条目,即任意数量的行 N/A 或十进制数。

关于java - 如何使用正则表达式在文本文件中查找一系列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com