我有很多已知的关键字,例如'cat', 'dog', 'rat'
。
我有一个可以是这样的字符串:
'rat;dog,cat - browncatdog(black)ratratcatdog-whitecat:grey'
我需要找到所有关键字以及紧随其后的所有字符(不包括分号和逗号之类的分隔符以及下一个关键字)。
所以上面字符串的结果应该是这个列表:
'rat', 'dog', 'cat - brown', 'cat', 'dog(black)', 'rat', 'rat', 'cat', 'dog-white', 'cat:grey'
我尝试了几种方法,但最终得到包含多个关键字或缺少某些关键字的项目。
答案 0 :(得分:0)
尝试一下
>>> [(f[0], f[1][0]) for f in re.findall(r'(rat|dog|cat)(.\w+)', 'rat;dog,cat - browncatdog(black)ratratcatdog-whitecat:grey') if re.match(r'(cat|dog|rat|[,;])', f[1]) is None]
[('cat', ':')]
此致
答案 1 :(得分:0)
我认为使用纯正则表达式是不可能的。 一种技巧是在所有关键字之前添加一个分隔符,然后在其后进行拆分。
>>> s = "rat;dog,cat - browncatdog(black)ratratcatdog-whitecat:grey"
>>> re.split(r"[;,]+", re.sub(r"(cat|dog|rat)",r",\1",s))
['', 'rat', 'dog', 'cat - brown', 'cat', 'dog(black)', 'rat', 'rat', 'cat', 'dog-white', 'cat:grey']