regex - 根据前面的单词从段落中提取数值
问题描述
我正在处理列中的一些大文本字段。经过一些清理后,我有如下内容:
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+)"]
^^^^^
请参阅正则表达式演示。在 Presto 中,用于REGEXP_EXTRACT
获取第一个匹配项:
SELECT regexp_extract(col, 'xerb Scale:\s*\["(\d+)"]', 1); -- 2
^^^
注意1
论点:
regexp_extract(string, pattern, group) → varchar
查找第一次出现的正则表达式pattern
并string
返回捕获组号group
推荐阅读
- python - 使用 networkx 和 matplotlib (Python) 为图形边缘添加工具提示
- cordova - 如何为 IOS 和 Android 构建启动画面
- python - 如何在 python 中使用正则表达式来删除 Unicode 字符?
- c++ - 为什么我的 if 函数没有从字符串中删除空格?它不能检测 c++ 中的空格输入吗?有没有办法从输入中删除空间
- acumatica - Acumatica 自定义字段值在屏幕上更新,但不在数据库中
- design-patterns - BOM - 最佳命名
- javascript - 用于获取 FieldValue 的 firebase 与 Firebase 有什么区别
- r - 将多个数据框导出到多个 Excel 工作表
- angular - 角路由打开错误的组件
- python - 多维输出的 Softmax 和损失函数