正则表达式问题:捕获至行尾无逗号的目标内容
正则表达式解决方案
可用正则表达式
Additional [nN]ames[^:\n\r]*:\s*([\s\w,:\/_-]+?)(?=\n[^,\n]*$|\Z)
规则拆解
Additional [nN]ames[^:\n\r]*::精准匹配开头的"Additional Names"或"additional names",跳过冒号前的任意非换行、非冒号字符,定位到冒号位置。\s*:匹配冒号后的任意空白字符(包括换行),兼容名字换行排列的格式。([\s\w,:\/_-]+?):非贪婪模式捕获所有名字相关字符(空格、字母数字、逗号、允许的符号),避免过度匹配后续无关内容。(?=\n[^,\n]*$|\Z):正向预查终止条件——要么下一行是无逗号的行尾,要么到达文本末尾,确保捕获范围截止到最后一个不带逗号的名字(如示例中的Richard)。
匹配效果验证
针对示例文本:
Additional Names:Josh,
Mike,
Richard
random wordsa asdoajdioaj : 320
捕获组内容为:Josh,\nMike,\nRichard,后续可通过按,\n或\n分割字符串,提取出Josh、Mike、Richard三个目标名字。
简化版本(若名字仅含字母)
如果确认名字仅包含字母、空格和逗号,可简化正则:
Additional [nN]ames:\s*([\sA-Za-z,]+?)(?=\n[^,\n]*$|\Z)
内容的提问来源于stack exchange,提问作者user20066926
相关产品推荐
相关产品推荐

