Regex在排除/包含一个具有各种占有欲的单词时进行匹配,然后是一个关键词


  1. 我想在单词"汽车;但如果它前面有"0";简,简的,简和简

下面的2个正则表达式部分适用于排除和包含,但我无法使其他变体适用于

  • (?<!\bJane(汽车
  • Jane汽车

例如

  • 车是红色的-匹配
  • 这是简的车是红色的->无
  • 这是Janes的车是红色的->无
  • 这是简的车是红色的;无
  1. 我也想找到Jane在短语中的情况

    • 车是红色的-无
    • 这是简的车是红色的
    • 这是简的车是红色的-匹配
    • 这是简的车是红色的
  2. 以及Jane(s(没有在汽车前面的地方

  • 此处Jane(s(的车是红色的-无
  1. 当然相反
  • 这是Jane的车是红色的-匹配

编辑

如果我有一份文件;红色汽车和Janes汽车";这应该是Match,因为这里引用了"匹配";汽车;没有Jane/Janes/Jane’s等字。

事实上,为了更清楚起见。我将对所有出现的";汽车;他们面前没有简这个词。

如果你想在不应该出现不同形式的Jane的地方匹配它,你可以用负前瞻排除匹配,然后仍然匹配car

^(?!.*bJane(?:'?s|(s))? carb).*bcarb.*
  • ^字符串开始
  • (?!负面展望
    • .*bJane(?:'?s|(s))?匹配JaneJanesJane'sJane(s)
    • carb匹配空间和单词car
  • )关闭前瞻
  • .*bcarb.*在单词边界之间用单词car匹配整行

Regex演示

如果简后面的不同形式的车应该在那里,你可以匹配它:

^.*bJane(?:'?s|(s))? carb.*

Regex演示

要匹配car的所有出现,而不匹配前面有Jane的出现,您可以匹配您不想保留的内容,并捕获您想保留的信息。

然后在Python中,您可以使用re.findall,它将返回捕获组值并从结果中删除空条目。

bJane(?:'?s|(s))? carb|b(car)b

Regex演示| Python演示

相关内容

最新更新