- 我想在单词"汽车;但如果它前面有"0";简,简的,简和简
下面的2个正则表达式部分适用于排除和包含,但我无法使其他变体适用于
- (?<!\bJane(汽车
- Jane汽车
例如
- 车是红色的-匹配
- 这是简的车是红色的->无
- 这是Janes的车是红色的->无
- 这是简的车是红色的;无
-
我也想找到Jane在短语中的情况
- 车是红色的-无
- 这是简的车是红色的
- 这是简的车是红色的-匹配
- 这是简的车是红色的
-
以及Jane(s(没有在汽车前面的地方
- 此处Jane(s(的车是红色的-无
- 当然相反
- 这是Jane的车是红色的-匹配
编辑
如果我有一份文件;红色汽车和Janes汽车";这应该是Match,因为这里引用了"匹配";汽车;没有Jane/Janes/Jane’s等字。
事实上,为了更清楚起见。我将对所有出现的";汽车;他们面前没有简这个词。
如果你想在不应该出现不同形式的Jane
的地方匹配它,你可以用负前瞻排除匹配,然后仍然匹配car
^(?!.*bJane(?:'?s|(s))? carb).*bcarb.*
^
字符串开始(?!
负面展望.*bJane(?:'?s|(s))?
匹配Jane
Janes
Jane's
Jane(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演示