根据前面的词从段落中提取数值
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
我正在处理列中的一些大文本字段。经过一些清理后,我得到如下内容:
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 expressionpattern
instring
and returns the capturing group numbergroup