Python正则无需正向后行断言提取两指定字符串间字符的方案
解决方案
直接用正则捕获组匹配目标字段即可,完全避开正向后行断言的固定宽度限制,适配pandas的列处理场景:
1. 正则写法
匹配规则写为:^Give me \d+ of (\S+)
其中(\S+)是唯一的捕获组,会自动匹配of 之后的所有非空字符,直到遇到第一个空格为止,刚好符合你的提取要求。
2. pandas 代码示例
假设你要处理的字符串存在df的content列,提取结果存到target列,写法如下:
import pandas as pd # 提取目标字段 df['target'] = df['content'].str.extract(r'^Give me \d+ of (\S+)')
原理说明
Python 原生re模块的正向后行断言默认要求固定匹配宽度,只有3.10及以上版本支持有限的可变宽度后行断言,兼容性较差。使用捕获组的方式不需要用到后行断言,全版本Python都可正常运行,代码也更简洁。
内容的提问来源于stack exchange,提问作者YevKad
相关产品推荐
相关产品推荐

