gpt4 book ai didi

javascript - 如何解析多行复杂的正则表达式模式?

转载 作者:数据小太阳 更新时间:2023-10-29 06:14:04 25 4
gpt4 key购买 nike

我正在尝试匹配这些数据

Combien ?

Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.

Combien 2 ?

Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.

模式应该匹配每个问题及其各自的答案

例如:

Question 1 = Combien

Answer 1 = Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.
Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.

我尝试使用正向先行 (javascript),但它没有用。

我试过的模式:

^(.+)\xA0*(?=\?)\n* 
^(.+)\xA0*(?!\?)$

最佳答案

您可以将 split 与将接受问题的捕获组一起使用:

str.split(/\s*?^(.*?)\s*\?\s*?[\r\n]+/m).slice(1);

slice 将跳过第一个问题之前的任何文本。结果将是一个包含偶数个条目的数组,交替问答。

var str = `
Combien ?

Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.

Combien 2 ?

Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum. Lorem ipsum.Lorem ipsum.Lorem ipsum. Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.
`;

var qa = str.split(/\s*?^(.*?)\s*\?\s*?[\r\n]+/m).slice(1);

console.log(qa);

如果你想在一个漂亮的对象数组中得到结果,其中每个对象都有一个问题和答案属性,然后将一个 reduce 链接到上面的代码:

str.split(/\s*?^(.*?)\s*\?\s*?[\r\n]+/m).slice(1)
.reduce((acc, m, i, arr) =>
i%2 ? acc.concat({ question: arr[i-1], answer: m.trim() }) : acc,
[]);

var str = `
Combien ?

Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.

Combien 2 ?

Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum. Lorem ipsum.Lorem ipsum.Lorem ipsum. Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.
`;

var qa = str.split(/\s*?^(.*?)\s*\?\s*?[\r\n]+/m).slice(1)
.reduce((acc, m, i, arr) =>
i%2 ? acc.concat({ question: arr[i-1], answer: m.trim() }) : acc,
[]);

console.log(qa);

关于javascript - 如何解析多行复杂的正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55975242/

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