假设我们有字符串“rice with milk”和另一个字符串,如“white rice”。我想使用正则表达式来获取第二个字符串,或者任何包含“rice”但没有“rice with”的字符串。在集合中说话,这将是包含“rice”但不包含“rice with”的所有字符串的集合
我一直在尝试将功能扩展^
到单词,而不仅仅是字符、游戏|
和组,但我找不到解决方案。
您应该能够使用“负前瞻”来做到这一点:
import re
m1 = re.search('rice(?! with)', 'rice with beans')
m2 = re.search('rice(?! with)', 'white rice is delicious')
if m1:
print 'm1 matches!'
print m1.group(0)
if m2:
print 'm2 matches!'
print m2.group(0)
解释:这(?
是“前瞻”的开始。这是一种告诉正则表达式“此时这里应该有一些匹配的东西......'这个表达式'。在这种情况下,我们立即在它后面加上一个,!
即(?!
表示“负前瞻” - “不是后跟“这个表达式””。在这个特定的例子中,我使用with
了表达式 - space
,然后是with
。我可以选择\s
“任何空格”——但我认为你只是用这个作为例子,你可能会想“不能遵循我想要的东西”的正则表达式。