gpt4 book ai didi

javascript - 如何从重复的文本模式中提取内容?

转载 作者:行者123 更新时间:2023-11-29 23:20:29 25 4
gpt4 key购买 nike

文本是患者记录数组的自定义序列化形式。

<PATIENTID>=1231
<PATIENTNAME>=ERICA
<PATIENTHISTORY>=MULTILINE TEXT
<KEYPOINTS>= ASTHMA, HBP, DIABETES
<PATIENTID>=1232
<PATIENTNAME>=NELSON
<PATIENTHISTORY>=MULTILINE TEXT
<KEYPOINTS>= JAUNDICE

我尝试使用以下正则表达式提取它,但它匹配整个字符串而不是每条记录。

const regEx= /^<PATIENTID>=(.)+<PATIENTNAME>=(.)+<PATIENTHISTORY>=(.)+<KEYPOINTS>=(.)+/g;

那么我应该如何更改正则表达式以遍历每条记录并提取相关字段?

最佳答案

您可以搜索左 Angular 和右 Angular 与其余 Angular 之间的内容,直到找到不直 Angular ,然后取键值对。

Playground :https://regex101.com/r/sf5soM/1

var string = '<PATIENTID>=1231\n<PATIENTNAME>=ERICA\n<PATIENTHISTORY>=MULTILINE TEXT\n<KEYPOINTS>= ASTHMA, HBP, DIABETES\n<PATIENTID>=1232\n<PATIENTNAME>=NELSON\n<PATIENTHISTORY>=MULTILINE TEXT\n<KEYPOINTS>= JAUNDICE',
regex = /<([^>]*)>=([^<]*)/gm,
m,
k, v;
result = [];

while ((m = regex.exec(string)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
[, k, v] = m;

if (k === 'PATIENTID') {
result.push({});
}
result[result.length - 1][k] = v.trim();
}
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何从重复的文本模式中提取内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870345/

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