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

如何用正则表达式提取字符串中%后的首个单词并获取全部匹配项

提取字符串中每个%后的首个单词并拼接成逗号分隔结果

你的正则表达式%\W*(\w+)本身是正确的,问题出在没有启用全局匹配模式,导致只匹配到第一个结果。以下是具体实现方法:

核心思路

  1. 保留原正则,开启全局匹配以遍历整个字符串找到所有符合条件的项
  2. 提取每个匹配结果中的捕获组内容(即%后的首个单词)
  3. 将所有提取到的单词用逗号拼接成最终字符串

代码示例

Python实现

import re
target_str = "60% Bob Peterson, 35% Jake Peter Sullivan, 5% Maria Teresa"
# 使用findall直接获取所有捕获组内容
name_list = re.findall(r'%\W*(\w+)', target_str)
# 拼接成逗号分隔的字符串
result = ', '.join(name_list)
print(result)  # 输出:Bob, Jake, Maria

JavaScript实现

const targetStr = "60% Bob Peterson, 35% Jake Peter Sullivan, 5% Maria Teresa";
const regex = /%\W*(\w+)/g;
const nameList = [];
let matchResult;
// 循环遍历所有匹配结果
while ((matchResult = regex.exec(targetStr)) !== null) {
  nameList.push(matchResult[1]);
}
const result = nameList.join(', ');
console.log(result); // 输出:Bob, Jake, Maria

说明

  • %\W*(\w+)的含义:匹配%符号,接着匹配任意数量的非单词字符(空格等),最后捕获第一个连续的单词字符序列(即我们要的名字)
  • 全局匹配模式在不同语言中的开启方式:Python的re.findall默认会返回所有捕获组结果;JavaScript需要在正则后加g标志,再通过循环exec获取所有匹配项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:50:29