使用正则表达式从Pandas DataFrame字符串列提取指定子字符串
问题解决方法
错误原因
- 正则中
*属于特殊量词,代表匹配前一个字符0次或多次,你未对其转义的情况下,/*逻辑是匹配斜杠符号0次或多次,无法匹配你文本中的字面量* - 原有正则没有定位到你需要提取的方括号区间,即便修正转义问题,也只会提取到
/*和*/中间的[lion]这类带方括号的内容,不符合需求
正确实现代码
你可以直接匹配方括号区间捕获内部内容,代码如下:
# 提取C23列方括号内的文本 df['C23'] = df['C23'].str.extract(r'\[([^\]]+)\]')
如果你需要严格匹配外层的/*和*/结构避免误匹配,可以使用更严谨的正则:
df['C23'] = df['C23'].str.extract(r'/\*\[([^\]]+)\]\*/')
正则逻辑说明
\[匹配字面量左方括号([^\]]+)为捕获组,匹配所有非右方括号的字符,就是你需要提取的内容\]匹配字面量右方括号- 严谨版本额外加了
/\*和\*/的匹配规则,确保只会匹配被/*[和]*/包裹的内容
内容的提问来源于stack exchange,提问作者Zanam
相关产品推荐
相关产品推荐

