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

Pandas正则是否支持Perl中的分支重置运算符?

Pandas中实现Perl分支重置运算符的等效效果

方法1:使用Python 3.10+支持的分支重置运算符

Pandas的str.replace基于Python的re模块,Python 3.10及以上版本原生支持Perl风格的分支重置运算符(?|...)。这个运算符能让不同分支里的捕获组共享同一编号,正好满足你的需求。

修改后的正则表达式及代码如下:

d["x"].str.replace("(?|(abc)de|(99)\d+)","[\\1,7",regex=True)

这里(?|...)包裹两个分支后,第一个分支的(abc)和第二个分支的(99)都会被编号为组1,反向引用\1会自动指向匹配分支对应的捕获内容。

方法2:兼容低版本Python的回调函数方案

如果你的Python版本低于3.10,无法使用分支重置运算符,可以通过自定义回调函数实现相同逻辑:

import re

def get_replacement(match_obj):
    # 提取第一个非空的捕获组内容
    target = match_obj.group(1) or match_obj.group(2)
    return f"[{target},7"

d["x"] = d["x"].str.replace("(abc)de|(99)\d+", get_replacement, regex=True)

回调函数会接收匹配对象,手动判断哪个捕获组有内容,再生成对应的替换字符串。

内容的提问来源于stack exchange,提问作者P.Jo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:10:16