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

如何用正则提取字段后的名称字符串?

如何用正则提取字段后的名称字符串?

嗨,我来帮你搞定这个正则提取的问题~

你遇到的情况是要从类似\r\n\r\nName John Smith\r\n的文本里提取“John Smith”,而且“Name”和名称之间的空格在3到8个之间对吧?你之前写的正则(?<=\nName)(.*)(?=\r\n)之所以没生效,是因为它把“Name”后面的所有空格都包含进匹配结果里了,而且没有限制空格的数量范围。

给你两个实用的正则方案,按需选就行:

方案一:用分组直接捕获(兼容性更好)

这个写法几乎所有正则引擎都支持,直接取第一个捕获组的内容就是你要的名称:

Name\s{3,8}(.*)(?=\r\n)

拆解一下各部分的作用:

  • Name:精准定位字段名
  • \s{3,8}:匹配3到8个空白字符(如果确定只有空格,也可以写成 {3,8},\s还能兼容制表符哦)
  • (.*):捕获名称字符串(直到后面的换行符)
  • (?=\r\n):确保匹配到的内容后面紧跟\r\n,不会把换行符包含进去

比如在Python里这么用:

import re
text = "\r\n\r\nName    John Smith\r\n"
match_result = re.search(r'Name\s{3,8}(.*)(?=\r\n)', text)
if match_result:
    print(match_result.group(1))  # 输出:John Smith

方案二:用正向预查直接获取结果(更简洁)

如果你的正则引擎支持正向肯定预查(比如Python 3.6+、JavaScript ES2018+等),可以用这个写法,直接拿到匹配结果就是名称:

(?<=Name\s{3,8})(.*)(?=\r\n)

这个写法里(?<=Name\s{3,8})是正向预查,用来定位到“Name+3-8个空格”之后的位置,后面的(.*)(?=\r\n)就会直接捕获到名称啦。

要是你还有其他特殊情况(比如名称里可能有特殊字符?),随时说哦~

备注:内容来源于stack exchange,提问作者em-steven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:54:08