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

pandas用regex匹配单词时如何排除前接首字母大写单词的场景

解决方法

核心是给正则添加负向零宽回顾断言,排除目标单词前接首字母大写单词的场景即可,调整后的规则完全匹配你的需求。

正则调整说明

新的正则规则各部分作用:

  • (?<![A-Z][a-z]*\s):负向回顾断言,要求当前匹配位置的前面不能出现「首字母大写、后续跟任意数量小写字母、末尾是空格」的内容,正好排除姓名类前接大写单词的场景
  • (?:{}):非捕获分组,包裹要匹配的多个备选单词,避免str.count统计时把捕获分组单独计数出现异常
  • \b:单词边界,保证匹配的是完整单词,不会匹配到其他单词的片段

完整可运行代码

import pandas as pd

data = {'text':["Kevin McDonald has bought a burger.", 
                "The best burger in McDonald is cheeze buger."]}

df = pd.DataFrame(data)
long_list = ['McDonald', 'Five Guys']

# 调整后的正则规则
pattern = r'(?<![A-Z][a-z]*\s)\b(?:{})\b'.format('|'.join(long_list))

df['count'] = df.text.str.count(pattern)
print(df)

运行输出

text  count
0           Kevin McDonald has bought a burger.      0
1  The best burger in McDonald is cheeze buger.      1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:27:02