根据前面的词从段落中提取数值

Extracting a numerical value from a paragraph based on preceding words

我正在处理列中的一些大文本字段。经过一些清理后,我得到如下内容:

truth_val: ["5"]
xerb Scale: ["2"]
perb Scale: ["1"]

我想提取数字 2。我试图匹配字符串“xerb Scale”,然后提取 2。我尝试将包括 2 的组捕获为 (?:xerb Scale:\s\[\")\d{1} 并尝试排除匹配的组通过消极的展望但没有运气。

这将在 SQL 查询中进行,我正在尝试通过 REGEXP_EXTRACT() 函数提取数值。此查询是将此信息加载到数据库中的管道的一部分。

如有任何帮助,我们将不胜感激!

您应该匹配您不需要获取的内容以便为您的匹配设置上下文,并且您需要匹配并捕获您需要提取的内容:

xerb Scale:\s*\["(\d+)"]
                 ^^^^^  

查看regex demo. In Presto, use REGEXP_EXTRACT获得第一场比赛:

SELECT regexp_extract(col, 'xerb Scale:\s*\["(\d+)"]', 1); -- 2
                                                      ^^^

注意 1 参数:

regexp_extract(string, pattern, group) → varchar
Finds the first occurrence of the regular expression pattern in string and returns the capturing group number group