Postgresql - 如何使用正则表达式模式提取字符串中第一次出现的子字符串?

2023-11-26

我正在尝试使用正则表达式从文本列中提取子字符串,但在某些情况下,字符串中存在该子字符串的多个实例。

在这些情况下,我发现查询不会返回子字符串的第一次出现。有谁知道我做错了什么?

例如:

如果我有这个数据:

create table data1
(full_text text, name text);

insert into data1 (full_text)
values ('I 56, donkey, moon, I 92')

我在用

UPDATE data1
SET name = substring(full_text from '%#"I ([0-9]{1,3})#"%' for '#')

我想要得到'I 56' not 'I 92'


您可以使用regexp_matches()反而:

update data1
  set full_text = (regexp_matches(full_text, 'I [0-9]{1,3}'))[1];

由于没有传递额外的标志,regexp_matches()只返回第一个匹配项 - 但它返回一个数组,因此您需要从结果中选择第一个(也是唯一一个)元素(即[1] part)

将更新限制为仅与正则表达式匹配的行可能是一个好主意:

update data1
  set full_text = (regexp_matches(full_text, 'I [0-9]{1,3}'))[1]
where full_text ~ 'I [0-9]{1,3}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgresql - 如何使用正则表达式模式提取字符串中第一次出现的子字符串? 的相关文章

随机推荐

  • SDK 中的 Android 电池

    有没有办法从Android SDK获取电池信息 比如电池剩余寿命等等 我无法通过文档找到它 这是一个简单的示例 可以让您了解电池的使用量 电池电压及其温度 将以下代码粘贴到活动中 Override public void onCreate
  • 在 Sympy 中创建形式线性函数

    我在 Sympy 中有一个表达式 比如 M n x n 我会 f 说 就像创建一个正式的线性函数 并将其应用到我的表达式中 以便在简化后得到 f M f n f x n 是否可以告诉 sympy 诸如线性之类的属性已得到验证 一种非常巧妙的
  • Joomla 3.X - 从标题中删除工具提示脚本?

    我正在尝试从自定义 joomla 模板标头中删除不需要的脚本 我已成功删除除此之外的所有内容 我已经搜索了几个小时 并尝试了很多方法来将其删除 但我似乎无法摆脱它 以下是我删除不需要的其他脚本的方法 对于遇到此问题的其他人 unset fr
  • 用 C/C++ 编写的语法突出显示库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个免费的 用于商业用途 库 用于用 c c 编写的语法着色 那里有吗 我不确定您是否正在寻找为现有控件或内置文本着色的控件着色的东西 如果您正在寻找后者 您可以查看 Sc
  • Winforms - 如何更改 ListView 控件中行的颜色?

    使用 C Winforms 3 5 是否可以将行颜色设置为在列表视图中自动交替 或者每次将新行添加到列表视图时是否需要手动设置行颜色 基于一个MSDN文章手动方法如下所示 alternate row color if i 2 0 lvi B
  • 如何在“宽高比”模式下将 UIImageView 裁剪为新的 UIImage?

    我想通过裁剪 UIImageView 内的图像来创建一个新的 UIImage 例如 在上图中 我想要一个绿色轮廓区域的新 UIImage 我找到了执行此操作的代码 通常它看起来像这样 作为 UIImage 类别 UIImage croppe
  • 智能 gwt 教程和指导 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我是 smart gwt 的新手 我需要一些帮助 请帮助提供一些好的 smart gwt 教程以及一些我可以购买来学习这一点的好书 我做了一些搜索
  • 当网络完全收敛时停止 Keras 训练

    如何配置 Keras 停止训练直到收敛或损失为 0 时 我故意想要过度拟合它 我不想设置纪元数 我只是想让它在收敛时停止 Use an 提前停车打回来 您可以自由选择要观察的损失 指标以及何时停止 通常 您会查看 验证损失 val loss
  • 清空关系数据库架构

    我有一个已备份的数据库 现在我试图删除原始数据库中的所有内容并将其恢复到空状态 因为它是一个关系数据库 所以它有关键的约束 我可以使用任何工具吗 最简单的方法可能是禁用外键检查 然后截断表 由于外键已禁用 因此截断表的顺序并不重要 set
  • App Engine:传输密码并将其安全存储在 Google App Engine 中的最佳做法是什么?

    我想知道从网络表单传输密码并将其存储在数据存储中的最先进技术是什么 最近的很多帖子都指出bcrypt但是 没有纯 Python 实现 而这是 App Engine 的要求 有什么建议么 最佳实践 将 Users API 与 Google 帐
  • 恢复 .orig 文件的简单方法?

    我刚走一不小心就跑了hg revert Mercurial 是否附带一个工具来移动所有 orig文件放回原处 不 如果你在 bash 中 你可以随时执行以下操作 for thefile in orig do cp v thefile the
  • 在 WordPress 中集成 Bootstrap 轮播,无需插件

    我已将 bootstrap carousel 集成到我的 WordPress 中 幻灯片将从标记为 精选 的帖子中获取 因此只会显示 5 个最近输入的 精选 帖子 下面是我的代码 div class carousel slide bs do
  • 如何将之前的路线作为 Angular 中的路径?

    如何将之前的路线作为 Angular 中的路径 我尝试使用解决方案这个链接 但它不会在首页加载时执行 constructor router Router router events pipe filter event gt event in
  • 记忆栅栏 - 需要帮助才能理解

    我正在读 Paul E McKenney 的 记忆障碍 http www rdrop com users paulmck scalability paper whymb 2010 07 23a pdf一切都解释得很详细 当我看到一切都清楚的
  • Javascript正则表达式在每第三个和第四个字符后添加破折号

    以下正则表达式 x toString replace B d 3 d g 在每个后面添加破折号3rd如此输入的字符123456789变成123 456 789 我正在尝试使用此正则表达式来格式化电话号码 问题出现在第 10 个字符上 于是进
  • SVM 的标准化特征值

    我一直在尝试一些 SVM 实现 我想知道 标准化特征值以适应一个范围的最佳方法是什么 从0到1 假设我有 3 个特征 其值范围为 3 5 0 02 0 05 10 15 如何将所有这些值转换为 0 1 范围 如果在训练期间 我将遇到的特征号
  • Rails 5 模型对象未显示所有 Devise 属性

    我正在使用 Rails 5 API 和设备 我有一个User模型 架构看起来像这样 create table users force cascade do t t string email default null false t stri
  • 将鼠标悬停在 Chrome 字段建议上会缩小输入

    我正在使用最新版本的 Chrome 74 0 3729 169 并注意到一些有点令人沮丧 有趣的事情 在下面的示例中 开始输入您之前使用过的电子邮件地址 Chrome 的建议出现后 将鼠标悬停在其中一项建议上 请注意输入的缩减程度如何 in
  • 从 Objective-C 类调用 C++ 构造函数

    如何从 Objective C 类内部调用 C 构造函数 class CppClass public CppClass int arg1 const std string arg2 arg1 arg1 arg2 arg2 private i
  • Postgresql - 如何使用正则表达式模式提取字符串中第一次出现的子字符串?

    我正在尝试使用正则表达式从文本列中提取子字符串 但在某些情况下 字符串中存在该子字符串的多个实例 在这些情况下 我发现查询不会返回子字符串的第一次出现 有谁知道我做错了什么 例如 如果我有这个数据 create table data1 fu