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

如何快速将含数字的字符串拆分为首字母、数字、尾字母三列?

高效拆分首字母-数字-尾字母格式字符串的方法

嘿,这个问题我太熟了!分步用substr提首尾再正则找数字确实有点繁琐,其实用正则表达式的捕获组就能一步搞定,不同常用工具里的实现都很简洁,我给你列几个实用场景:

Excel(365及以上版本)

如果你的数据在A列,直接用REGEXEXTRACT配合捕获组,甚至能一次性返回三列结果:

  • 提取首字母:=REGEXEXTRACT(A1,"^([A-Za-z])")
  • 提取数字:=REGEXEXTRACT(A1,"(\d+)")
  • 提取尾字母:=REGEXEXTRACT(A1,"([A-Za-z])$")

更高效的是用一个公式直接拆分出三个值(选中三个目标单元格后输入公式按回车):

=REGEXEXTRACT(A1,"^([A-Za-z])(\d+)([A-Za-z])$")

Python

用re模块的匹配分组,几行代码就能批量处理所有字符串:

import re

# 定义匹配规则:首字母+连续数字+尾字母
pattern = r'^([A-Za-z])(\d+)([A-Za-z])$'
test_data = ["X3Y", "X33U", "Y231Z"]

for s in test_data:
    match_result = re.match(pattern, s)
    if match_result:
        first_letter, num, last_letter = match_result.groups()
        print(f"首字母: {first_letter}, 数字: {num}, 尾字母: {last_letter}")

运行后直接输出拆分好的三组数据,完全不用分步处理。

MySQL(或支持正则捕获组的SQL方言)

用REGEXP_SUBSTR指定捕获组位置,在查询里直接拆分:

SELECT
    REGEXP_SUBSTR(your_column, '^([A-Za-z])', 1, 1, 'c', 1) AS first_letter,
    REGEXP_SUBSTR(your_column, '(\d+)', 1, 1, 'c', 1) AS number,
    REGEXP_SUBSTR(your_column, '([A-Za-z])$', 1, 1, 'c', 1) AS last_letter
FROM your_table;

这里最后一个参数1就是指定提取对应捕获组的内容,一次查询就能得到拆分后的三列。

核心思路就是用正则的捕获组精准定位三个部分:^([A-Za-z])匹配开头的单个字母,(\d+)匹配中间的连续数字,([A-Za-z])$匹配结尾的单个字母,一次性完成提取,比分步操作高效太多啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:22:36