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

pandas str.replace正则替换如何排除非独立单词的部分匹配

解决方案

你需要使用正则的单词边界标识符\b来限定只匹配独立的hi/hello完整单词,避免命中其他单词内部的字符片段。

正确代码如下:

import re
import pandas as pd

a1 = pd.Series('12:04:25 Roberts: Hi, Hello, hi this hi')
# 用\b限定单词边界
res = a1.str.replace(r'\b(hello|hi)\b', '111', regex=True, flags=re.IGNORECASE)

运行后输出结果符合预期:

12:04:25 Roberts: 111, 111, 111 this 111

原理说明

\b属于正则中的单词边界元字符,匹配的是「单词字符(字母、数字、下划线)」和「非单词字符」的交界位置,能保证匹配到的hi/hello是独立单词,不会命中this这类包含hi字符片段的单词。

你之前写法的问题:

  • 第一种写法没有匹配范围限制,只要连续出现hi/hello字符就会被替换,因此会误替换this里的hi
  • 第二种和第三种写法里的^和$代表整个字符串的开头和结尾,只能匹配整个字符串就是hi的情况,无法匹配句子中间的hi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:06:03