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

正则表达式需求:统计字母之间的数字段数量

解决方案:统计字母间数字段的正则表达式

你的原表达式存在两个核心问题:

  • 错误使用字符类方括号[]替代分组逻辑,且整体匹配的是“字母串+数字串+字母串”的完整块,会导致中间字母被重复占用,无法识别连续的字母间数字段(比如x1y1z1里的第二个数字段)。
  • 匹配逻辑是捕获整个“字母-数字-字母”单元,而非单独定位字母之间的数字段,导致计数结果不符合预期。

正确的正则表达式

使用零宽断言精准匹配位于两个字母之间的数字段:

(?<=[a-z])[0-9]+(?=[a-z])

表达式解释

  • (?<=[a-z]):反向零宽断言,确保数字段前紧邻至少一个小写字母(不捕获该字母)
  • [0-9]+:匹配一个或多个数字,即我们需要统计的目标数字段
  • (?=[a-z]):正向零宽断言,确保数字段后紧邻至少一个小写字母(不捕获该字母)

验证示例

对三个测试案例的匹配结果:

  1. schowalte3rguss77ie85:匹配到3和77,共2个,符合预期
  2. xyz1zyx:匹配到1,共1个,符合预期
  3. x1y1z1:匹配到1(x与y之间)和1(y与z之间),共2个,符合预期

使用示例(以Python为例)

import re

def count_letter_between_digits(s):
    matches = re.findall(r'(?<=[a-z])[0-9]+(?=[a-z])', s)
    return len(matches)

# 测试验证
print(count_letter_between_digits("schowalte3rguss77ie85")) # 输出 2
print(count_letter_between_digits("xyz1zyx")) # 输出 1
print(count_letter_between_digits("x1y1z1")) # 输出 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:15:53