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

如何使用正则表达式按位置值选择子串?(新手求助)

如何用正则表达式按位置选取子串?

嘿,作为正则新手完全不用慌,这个问题其实很好解决!咱们结合你的示例来一步步说清楚。

你的目标字符串是 201967895678,要提取第5位到第8位的内容——也就是从左数第5个字符开始,连续4个字符,对应结果是 6789。下面给你两种简单易懂的正则方案:

方案1:捕获组匹配(最直观)

正则表达式:^.{4}(.{4})

咱们拆解一下每个部分的作用:

  • ^:锚定到字符串的开头,保证我们从最左边开始计数,不会从中间位置误匹配
  • .{4}:匹配任意4个字符(对应你的前4位:2019)
  • (.{4}):用括号把接下来的4个字符「捕获」起来,这就是我们要的第5-8位内容

使用示例(以Python为例):

import re
target_str = "201967895678"
result = re.search(r'^.{4}(.{4})', target_str)
if result:
    print(result.group(1))  # 输出:6789

这里group(1)就是取第一个捕获组里的内容,也就是我们要的子串。

方案2:正向后顾断言(无需捕获组)

如果你不想用捕获组,也可以用断言来定位,正则表达式:(?<=^.{4}).{4}

拆解:

  • (?<=^.{4}):这是正向后顾断言,意思是「当前位置的前面必须是字符串开头加上4个字符」,帮我们精准定位到第4位之后的位置
  • .{4}:直接匹配接下来的4个字符,就是目标子串

使用示例:

import re
target_str = "201967895678"
result = re.search(r'(?<=^.{4}).{4}', target_str)
if result:
    print(result.group())  # 输出:6789

这个方案里,匹配到的结果直接就是我们要的内容,不用额外取捕获组。

小提醒

  • . 默认匹配除换行符外的任意字符,你的示例是纯数字,完全适用;如果字符串里有换行,在Python里可以加re.DOTALL标志
  • 要确保你的目标字符串长度至少有8位,不然正则会匹配不到结果哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:41:00