gpt4 book ai didi

java - 如何使用正则表达式格式化json文件

转载 作者:行者123 更新时间:2023-12-02 02:55:06 25 4
gpt4 key购买 nike

我想使用 java 的正则表达式将文本文件写入 json 文件。

意思是我想要一个包含以下内容的文本文件:

5.2 你好

句子 1. 句子 2.

变成这样:

{"Chapter": "5.2",
"Title": "Hello",
"Text": "Sentence 1. Sentence 2."}

我有一些代码来匹配文本文件中的某些字段并将其输出为 json,但是我不确定如何使用正则表达式将 json 分解为我需要的部分。

我正在尝试这样做:

 Pattern p = Pattern.compile((\d\.\d)(.*?)(?=\d\.\d|$));
Matcher m = p.matcher(readFile(text));
while(m.find()) {
obj.put("Chapter", m.group());
System.out.println(obj);}

但这仅输出章节字段,后面跟着文本的其余部分。我不知道如何将这些数据拆分为章节、标题和文本字段。

输入:

5.2 你好

句子 1. 句子 2.

当前输出是:

{"Chapter": "5.2 Hello 句子 1. 句子 2."}

但我需要它是这样的:

{“章节”:“5.2”,
“标题”:“你好”,
"Text": "句子 1. 句子 2."}

有什么帮助吗?

最佳答案

我假设您的输入格式为:

5.2 你好\n

无论文本...

你的想法是正确的。因为你想将原文分为三部分。您只需要利用各部分之间的边框即可。例如,“5.2”和“Hello”之间有一个空格(\s),“Hello”在正文之前有一个新行(或者可能是另一个空格)。

您可以尝试:

    Pattern p = Pattern.compile("(\\d+\\.\\d+)\\s+(.*?)\\n(.*$)");
Matcher m = p.matcher(text);
if(m.find()) {
obj.put("Chapter", m.group(1));
obj.put("Title", m.group(2));
obj.put("Text", m.group(3));
System.out.println(obj);
}

您以前使用组的方式是不正确的,因为组的数量始终取决于您的pattern.compile()有多少对括号。由于您总共将拥有三个组,因此只需使用索引即可获取它们的值。

注意:group(0) 是整个事物,因此第一个组通过索引 1 访问。

关于java - 如何使用正则表达式格式化json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237933/

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