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

Python如何高效提取~m~\d+~m~模式间隔的目标字符串

更高效的实现方案

直接用正则捕获组一次匹配得到结果,不需要额外处理索引和二次查找原字符串,代码如下:

import re

raw_str = "~m~90~m~{Somestringof length 90}~m~20~m~{Some string of len 20}~m~10~m~{Somestringof length 10}"
# 正则使用分组捕获分隔符之间的内容
pattern = re.compile(r"~m~\d+~m~(.*?)(?=~m~\d+~m~|$)")
result = pattern.findall(raw_str)

运行后result就是你需要的所有目标字符串列表:['{Somestringof length 90}', '{Some string of len 20}', '{Somestringof length 10}']

原理说明

  • 正则先匹配标记位~m~\d+~m~
  • 用(.*?)非贪婪匹配捕获标记位之后的目标内容
  • 正向先行断言(?=~m~\d+~m~|$)用来控制匹配截止到下一个标记位或者字符串结尾,避免内容匹配过长
  • findall方法会直接返回所有捕获组的内容,不需要再手动查索引切取原串,比原方案少了一次字符串遍历和索引计算的开销,性能提升明显,字符串越长优势越大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:36:02