gpt4 book ai didi

使用正则表达式的Java字符串拆分/解析问题

转载 作者:行者123 更新时间:2023-12-01 10:05:54 25 4
gpt4 key购买 nike

我有可能有值(value)的字符串数据流

system_id "2.2.2.1"
component_id 6
sequence_number 11
timestamp 1459202982

kv {
key "val1"
}
kv {
key "val2"
}
kv {
key "val3"
}

system_id "2.2.2.1"
component_id 6
sequence_number 15
timestamp 1459202982

kv {
key "val4"
}
kv {
key "val5"
} and so on....

我感兴趣的是键的值,即 val1、val2、val3....

我使用的扫描仪如下所示,

scan = new Scanner(new File("kvfiles/file1")).useDelimiter("\\s+kv\\s+\\{\\s+");  //To ignore any thing before "kv"

while (scan.hasNext()) {
String str = scan.next();
finalString = str.split("\\s+\\}")[0];
}

当文件以“kv {”启动时,此代码工作正常,但在上述情况下,当文件以下面提到的值启动时,解析器会给出错误。

    system_id "2.2.2.1"
component_id 6
sequence_number 11
timestamp 1459202982

知道如何跳过这个数据 block 吗?

注意:这个数据 block 偶尔会出现在一些“kv { }”标签之后,我所需要的就是在它出现时忽略它。

最佳答案

你为什么不只选择有趣的台词呢?

public class Test {

public static void main(String[] args) throws FileNotFoundException {
Pattern p = Pattern.compile("\\s+key.+");

Scanner sc = new Scanner(new File("src/main/resources/test.txt"));
while (sc.hasNextLine()) {
sc.nextLine();
String theLineYouWant = sc.findInLine(p);
// scnn this line again here
if (theLineYouWant != null) {
System.out.println(theLineYouWant);
}
}
}
}

请记住,上面提到的文件只是我自己的测试文件。

关于使用正则表达式的Java字符串拆分/解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483293/

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