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

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) → varcharstring 中查找第一次出现的正则表达式pattern 并返回capturing group number group

【讨论】:

以上是关于根据前面的单词从段落中提取数值的主要内容,如果未能解决你的问题,请参考以下文章

使用VBA提取word文档的段落号

从段落中提取句子的 SQL 查询

蓝桥杯java 算法提高 统计单词数

Python 从某个单词开始阅读,直到该段落结束

获取从VBA中的段落获得的行的第一个单词的索引号

VBA-从IE中的部分中提取段落