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

如何使用正则表达式将文本数据拆分提取为姓名、年龄、地址三个部分?

符合拆分需求的正则实现

你可以使用如下正则表达式完成需求:
^(\D+?)\s*(\d+)\s*(.*)$

规则说明

  • ^:锚定匹配的起始位置为行首,避免跨行匹配
  • 第一个捕获组(\D+?):非贪婪匹配所有非数字字符,恰好覆盖「行首到第一个数字之前」的第一块内容
  • \s*:匹配第一块和第二块之间的任意数量空白字符,不会被计入捕获结果
  • 第二个捕获组(\d+):匹配连续的数字序列,恰好覆盖「第一个数字到其后第一个空白字符前」的第二块内容
  • \s*:匹配第二块和第三块之间的任意数量空白字符,不会被计入捕获结果
  • 第三个捕获组(.*):匹配剩余所有字符直到行尾,对应第三块内容
  • $:锚定匹配的结束位置为行尾,确保整行内容都被拆分

效果示例

以第一行测试数据为例,匹配后三个捕获组的输出分别为:

  1. Amber-Rose Bowen
  2. 53
  3. 123 Machinery Rd.

原有写法的问题

你最初写的([a-zA-Z]+)([0-9]+)存在两处核心问题:

  • 姓名中包含空格、连字符等非英文字母的字符,仅用[a-zA-Z]+无法捕获完整的第一块内容
  • 没有处理块之间的空白字符,也没有覆盖行尾的剩余内容,无法完成三段拆分需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:45:06