python正则表达式提取某段信息后,如何去掉这些信息中含有的某些信息

比如我要提取 有....中这两个字中间的信息。
但假如这中间信息含有 干燥剂 或者 发明了。。技术,我就不想要这条信息,不提取这整条信息。
该怎么做,有大神会吗

这个压根用不上正则表达式。
比如你要提取“有......中”中间的信息,直接用字符串截取不就行了,因为你的是没有规则的字符串。
假如这中间信息含有 干燥剂 或者 发明了。。技术 ---这个可以通过查找字符串,去做判断,判断之后再决定是否要提取这整条信息。追问

不用正则表达式,用什么代码来进行字符串截取呢
又不知道需要文字的位子,拿什么截取

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-03

筛选两遍,第一遍以非贪婪模式找出所有匹配有...中的字符串,第二遍剔除其中含有非法字符的匹配结果。

test_str = '有干燥剂中有干燥中有发明了XX技术中有发明了XX中'
regex1 = r'有(.+?)中' #匹配所有'有...中'之间的字符
pre_match = re.findall(regex1, test_str) #结果:['干燥剂','干燥','发明了XX技术','发明了XX']
regex2 = r'(?!.*干燥剂)(?!.*发明了.+技术)' #不能含有干燥剂和发明了..技术字样
final_match = [s for s in pre_match if re.match(regex2, s)] #结果:['干燥','发明了XX']

本回答被提问者采纳