如何使用正则表达式从文本中解析问题的答案

How to use regexp to parse answer to question from text

我正在尝试从如下所示的数据中解析文本:

id      note_text 
--------------------------------------------------------------- 
1       Screening complete: YesÂCounseled 
2       A is 12 year old·°·°Screening complete: NO - multiple people present·°  
3       °calorie foods/snacksÂScreening complete: NO - card not avail·°·°

我只需要弄清楚 "Screening complete:" 后面是什么短语,这是以下集合结构中的 3 个答案选项:

Yes 
NO - multiple people present 
NO - card not avail

如您所见,'Screening Complete: [answer] '混杂在note_text栏中,被其他没有结构的文字包围。

对于输出,理想情况下,我希望创建一个单独的文本列来显示:

id      note_text 
--------------------------------------------------------------- 
1       Screening complete: Yes
2       Screening complete: NO - multiple people present  
3       Screening complete: NO - card not avail

我从来没有使用过 regexp 表达式,所以我完全不知道如何从自由文本列中解析这些特定的短语。如果有人可以帮助指导我如何编写正则表达式来提取 'Screening complete:' 之后的答案短语,那将不胜感激..

您要查找的正则表达式是:

Screening complete: (?:(?!Â).)*

查找字符串 "Screening complete: " 并获取所有内容直到找到 Â 但不包括 Â

const text = "Screening complete: YesÂCounseled \nA is 12 year old·°·°Screening complete: NO - multiple people present·°  \n°calorie foods/snacksÂScreening complete: NO - card not avail·°·°";

console.log("Complete text");
console.log(text);
const matches = text.match(/Screening complete: (?:(?!Â).)*/g);

matches.forEach((item, index) => console.log(index + " match: ", item));

在 Netezza 中,您可以使用 regexp_replace():

select regexp_replace(note_text, '^.*(Screening complete:[^Â]+).*$', '')

Here 是一个使用 Postgres 的 db<>fiddle。