Python正则匹配:匹配两术语间指定字数内容并排除特定子串
Python正则匹配方案:含指定间隔单词的子串并排除特定内容
解决方案
在原有正则逻辑基础上添加负向先行断言,即可同时实现匹配间隔要求的子串、排除指定内容的需求。
最终正则表达式
(?!my very funny words)my(?:\s+\w+){0,2}\s+words
代码示例
import re # 定义正则模式 pattern = r'(?!my very funny words)my(?:\s+\w+){0,2}\s+words' # 测试用例1:符合匹配条件的文本 test_text1 = "I'm searching for my whatever funny words inside this text" matches1 = re.findall(pattern, test_text1) print(matches1) # 输出: ['my whatever funny words'] # 测试用例2:包含需排除内容的文本 test_text2 = "I'm searching for my very funny words inside this text" matches2 = re.findall(pattern, test_text2) print(matches2) # 输出: []
原理说明
my(?:\s+\w+){0,2}\s+words:原匹配逻辑,负责匹配"my"与"words"之间最多包含2个单词的子串(?!my very funny words):负向先行断言,检查当前位置开始的子串不是指定的排除内容,若检测到排除内容则直接跳过该匹配项
扩展说明
如果需要排除多个特定子串,可直接扩展负向断言的内容,示例:
(?!my very funny words|my another excluded words)my(?:\s+\w+){0,2}\s+words
内容的提问来源于stack exchange,提问作者Mag_Amine
相关产品推荐
相关产品推荐

