0

假设我们有字符串“rice with milk”和另一个字符串,如“white rice”。我想使用正则表达式来获取第二个字符串,或者任何包含“rice”但没有“rice with”的字符串。在集合中说话,这将是包含“rice”但不包含“rice with”的所有字符串的集合

我一直在尝试将功能扩展^到单词,而不仅仅是字符、游戏|和组,但我找不到解决方案。

4

2 回答 2

3

您应该能够使用“负前瞻”来做到这一点:

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“任何空格”——但我认为你只是用这个作为例子,你可能会想“不能遵循我想要的东西”的正则表达式。

于 2013-10-15T03:49:52.563 回答
0

我认为您想为此使用负前瞻,

    r'.*rice(?! with).*' 

在这里测试

于 2013-10-15T03:46:44.947 回答