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

正则分割<???>并排除<%???>时匹配结果丢失尖括号如何解决

问题原因

Python re.split() 规则:当正则表达式包含捕获分组时,分组匹配到的内容会作为独立元素插入返回的结果列表。你当前的正则 r'<((?!%).+?)>' 仅将尖括号内部的内容放在了捕获分组中,外层的 <、> 不在分组范围内,所以返回结果里只会保留内部文本,丢失尖括号。

解决方法

调整捕获分组的范围,把整个标签(包括尖括号)都包进捕获分组即可,修改后的正则如下:

re.split(r'(<(?!%).+?>)', source_text)

执行结果示例

用上述正则处理你的样例文本,返回结果为:

['「<%sM_item2><%sM_plusnum2>の|\u3000<%sM_slot>の部分を|\u3000<%sM_change_color>に\u3000カラーリングするのですね?|', '<br>', '|「それでは\u3000<%sM_item>が\u300010本と|\u3000<%nM_gold>ゴールドが必要ですが\u3000よろしいですか?|', '<yesno>', '', '<close>', '']

如果不需要将匹配到的标签插入结果列表,仅做分割丢弃标签,把捕获组改成非捕获组即可,正则为 r'<(?!%).+?>'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:27:04