请教Python正则表达式排除特定单词, 以特定单词结尾的问题

s=’电视机madie美的 HZ58M89 ppt智能电视, tongshuai统帅 tm58GT66 max智能电视,
kangjia康佳LB58G3 Pro 58英寸4K液晶电视机’

请教老师, 以上是3个电器型号, 我想只提取其中的3个型号, HZ58M89 ; tm58GT66 max ; LB58G3 Pro
型号是数字,英文,一些符号组合而成, 一般4个字符以上, 型号多数是连续的, 有2种例外情况, 后面跟了1个空格和特定的单词: 空格pro, 空格max, 也是型号一部分, 但是单词ppt就不是型号一部分.
re.findall(r”[()()0-9a-zA-Z/@+-]{4,}”,s,flags=re.IGNORECASE) 我用这个表达式, 会得到多余的, 和不含pro, max

我想排除掉固定的单词 madie, tongshuai, kangjia , 匹配进固定的单词, 空格pro, 空格max, 排除ppt不匹配, 想得到如下结果, 该怎么写正则表达式, 谢谢老师
想得到的结果: [‘HZ58M89’, ‘tm58GT66 max’, ‘LB58G3 Pro’]

讨论数量: 1
Jason990420
import re

string = (
    '电视机 '
    'madie 美的 HZ58M89 ppt 智能电视,'
    'tongshuai 统帅 tm58GT66 max 智能电视,'
    'kangjia 康佳 LB58G3 Pro 58 英寸 4K 液晶电视机'
)

regex = re.compile("""
    \w+                 # Matched if ASCII word [a-zA-Z0-9_]
    (
        (?=\sppt)       # Case 1, match if white spaces and an ppt (excluded)
        |               # or
        \s\w+           # Case 2, match if white spaces and an ASCII word (included)
    )
""", re.VERBOSE | re.IGNORECASE | re.ASCII)

for match in regex.finditer(string):
    print(repr(match.group()))
'HZ58M89'
'tm58GT66 max'
'LB58G3 Pro'
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!