You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中提取字符串中以'M'开头的所有单词

提取所有以'M'开头的单词解决方案

核心正则表达式

要匹配所有以'M'开头的完整单词,用正则 \bM\w+ 即可:

  • \b:匹配单词边界,确保'M'是单词的开头(避免匹配类似"xMary"这种字符串里的Mary)
  • M:指定单词首字母为大写M
  • \w+:匹配后续的字母、数字或下划线(覆盖常见的单词字符)

不同场景的实现示例

Python环境

直接用re.findall全局提取所有匹配项,再拼接成目标格式:

import re
input_str = '[{"name": "Mary", "type": "Dog"}, {"name": "Max", "type": "Dog"}]'
m_words = re.findall(r'\bM\w+', input_str)
result = ', '.join(m_words)
print(result)  # 输出: Mary, Max

PostgreSQL SQL

用regexp_matches配合string_agg实现:

SELECT string_agg(match, ', ') AS extracted_words
FROM regexp_matches(
  '[{"name": "Mary", "type": "Dog"}, {"name": "Max", "type": "Dog"}]',
  '\bM\w+',
  'g'  -- 'g'表示全局匹配
) AS match;

Spark SQL

用regexp_extract_all提取所有匹配,再拼接:

SELECT concat_ws(', ', regexp_extract_all(your_column, '\\bM\\w+', 0)) AS extracted_words
FROM your_table;

为什么之前的方法不生效

  • regex_replace是替换字符,不是提取匹配项,没法直接拿到目标单词
  • substring只能截取单个位置的片段,无法遍历字符串找到所有符合条件的单词

内容的提问来源于stack exchange,提问作者maintheme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:33:10