Python正则如何排除指定字符串匹配剩余目标内容及对应数值
Python正则匹配排除指定关键词的名称与数值实现方案
核心实现逻辑
用正则的负向先行断言排除Honda、Nissan两个指定名称,同时分两个捕获组分别提取剩余名称和对应数值即可。
代码示例
import re # 可根据实际原始文本的结构、分隔符灵活调整匹配规则 raw_text = """ Cider 631 Honda 2024 Spruce 871 Nissan 1890 Pine 10621 Walnut 10301 """ # 核心正则表达式 pattern = r'\b(?!(?:Honda|Nissan)\b)([A-Za-z]+)\s+(\d+)' result = re.findall(pattern, raw_text) print(result)
规则说明
\b为单词边界标识,避免部分匹配,不会误排除名称里包含Honda/Nissan子串的其他合法内容(?!(?:Honda|Nissan)\b)是负向先行断言,代表当前匹配位置后不是完整的Honda或Nissan单词,?:用于标记该分组为非捕获组,避免多余分组内容出现在findall的返回结果中([A-Za-z]+)是第一个捕获组,匹配纯字母组成的名称,若名称支持下划线、数字等其他字符,可自行调整中括号内的字符集规则\s+匹配名称和数值之间的1个或多个空白分隔符(\d+)是第二个捕获组,匹配数值部分
输出结果
运行代码后直接得到目标返回值:[('Cider', '631'), ('Spruce', '871'), ('Pine', '10621'), ('Walnut', '10301')]
内容的提问来源于stack exchange,提问作者Lacer
相关产品推荐
相关产品推荐

