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

使用正则表达式统计下划线单词后的单词数量

统计下划线开头单词后的单词数量

需求:统计字符串中下划线开头的单词之后出现的单词数量,测试字符串如下:

testString='21 High Street _Earth Mighty Motor Mechanic'

现有问题:原正则(?:\s[a-zA-Z]+)会匹配所有带空格的单词,无法排除下划线单词之前的内容,导致统计结果包含前面的High、Street。

解决方案1:优化正则直接匹配目标单词

修改正则模式,通过正向零宽断言定位到下划线开头单词之后,再匹配后续的单词:

import re
testString='21 High Street _Earth Mighty Motor Mechanic'
# 匹配下划线单词后的所有字母单词
pattern = r'(?<=_\w+)\s+([a-zA-Z]+)'
results = re.findall(pattern, testString)
if results:
  answer = len(results)
  print(answer)  # 输出3

正则说明:

  • (?<=_\w+):正向零宽断言,确保当前位置前是下划线开头的完整单词(_\w+匹配下划线+至少一个字母/数字)
  • \s+:匹配单词间的一个或多个空格
  • ([a-zA-Z]+):捕获目标单词,仅匹配纯字母组成的单词

解决方案2:截取目标段落后拆分单词

如果正则逻辑复杂,也可以先定位下划线单词的位置,截取后续内容后拆分统计:

import re
testString='21 High Street _Earth Mighty Motor Mechanic'
# 定位下划线开头的单词
match_obj = re.search(r'_\w+', testString)
if match_obj:
    # 截取下划线单词之后的内容并去除首尾空格
    target_content = testString[match_obj.end():].strip()
    # 按空格拆分单词
    word_list = target_content.split()
    answer = len(word_list)
    print(answer)  # 输出3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:32:47