正则表达式:如何查找不包含特定单词的子字符串

2024-10-01 09:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这根绳子

string = "STARTcandyFINISH  STARTsugarFINISH STARTpoisonFINISH STARTBlobpoisonFINISH STARTpoisonBlobFINISH"

我想匹配并捕获出现在STARTFINISH之间的所有子字符串,但前提是“poison”一词没有出现在该子字符串中。如何排除这个词并只捕获所需的子字符串?你知道吗

re.findall(r'START(.*?)FINISH', string)

所需的捕获组:

candy
sugar

Tags: 字符串restringstart绳子finish前提findall
1条回答
网友
1楼 · 发布于 2024-10-01 09:19:35

使用回火点,我们可以尝试:

string = "STARTcandyFINISH  STARTsugarFINISH STARTpoisonFINISH STARTBlobpoisonFINISH STARTpoisonBlobFINISH"
matches = re.findall(r'START((?:(?!poison).)*?)FINISH', string)
print(matches)

这张照片:

['candy', 'sugar']

对于regex模式如何工作的解释,我们可以仔细看看:

(?:(?!poison).)*?

这使用了回火点技巧。它将一次匹配一个字符,只要下面的内容是而不是poison。你知道吗

相关问题 更多 >