根据前面的单词从段落中提取数值
Posted
技术标签:
【中文标题】根据前面的单词从段落中提取数值【英文标题】:Extracting a numerical value from a paragraph based on preceding words 【发布时间】:2020-06-17 12:59:33 【问题描述】:我正在处理列中的一些大文本字段。经过一些清理后,我有如下内容:
truth_val: ["5"]
xerb Scale: ["2"]
perb Scale: ["1"]
我想提取数字 2。我正在尝试匹配字符串“xerb Scale”,然后提取 2。我尝试将包含 2 的组捕获为(?:xerb Scale:\s\[\")\d1
,并尝试通过否定的外观排除匹配的组领先但没有运气。
这将在 SQL 查询中,我试图通过 REGEXP_EXTRACT()
函数提取数值。此查询是将此信息加载到数据库中的管道的一部分。
任何帮助将不胜感激!
【问题讨论】:
见prestosql.io/docs/current/functions/…或prestosql.io/docs/current/functions/regexp.html#regexp_extract @PiotrFindeisen 是的,我在 presto 中使用了相同的正则表达式函数。我正在寻找合适的模式来使用。 【参考方案1】:您应该匹配您不需要获取的内容以便为您的匹配设置上下文,并且您需要匹配并捕获您需要提取的内容:
xerb Scale:\s*\["(\d+)"]
^^^^^
请参阅regex demo。在 Presto 中,使用REGEXP_EXTRACT
获得第一个匹配项:
SELECT regexp_extract(col, 'xerb Scale:\s*\["(\d+)"]', 1); -- 2
^^^
注意1
参数:
regexp_extract(string, pattern, group) → varchar
在string
中查找第一次出现的正则表达式pattern
并返回capturing group numbergroup
【讨论】:
以上是关于根据前面的单词从段落中提取数值的主要内容,如果未能解决你的问题,请参考以下文章