正则表达式优化:提取NAME与FISCAL间的完整名称(含分组与环视)
优化正则表达式提取名称字段
需求背景
从格式为 NAME [名称] FISCAL 20394 的文本中,提取NAME与FISCAL之间的完整名称(支持多词),并区分个人全名和公司名。原正则仅能识别存在文本,但无法正确分组提取完整内容。
优化后的正则表达式
NAME\s+([\w\s.]+?)\s+(?=FISCAL)
正则说明
NAME\s+:匹配NAME标签及后续的一个或多个空格([\w\s.]+?):非贪婪模式捕获核心名称,支持字母、数字、空格(适配多词人名)、点号(适配公司名后缀如INC.),非贪婪匹配避免将FISCAL前的冗余空格纳入结果\s+(?=FISCAL):匹配名称与FISCAL之间的空格,正向预查确保后续紧跟FISCAL标签
提取结果验证
针对示例文本:
NAME MARY POPPINS FISCAL 20394 NAME MARY JANE POPPINS FISCAL 20394 NAME SNOWFLAKE INC. FISCAL 20394
分组1将分别得到:
MARY POPPINSMARY JANE POPPINSSNOWFLAKE INC.
区分个人/公司名逻辑
提取名称后,可通过以下规则判断类型:
- 若名称包含
INC.、CORP.、LLC、LTD等常见公司后缀,判定为公司名 - 无上述后缀则判定为个人全名
扩展说明
如果名称中可能包含连字符(如JOHN DOE-SMITH),可将正则字符集扩展为 [\w\s.-]+?,适配更多场景。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

