Skip to main content
 首页 » 编程设计

python 正则表达式匹配一组中的一个或多个字符,特定替代项除外

2024年11月01日27sky-heaven

我想匹配 <>=/*+- 的所有组合除了 =和 => .我该怎么做?

 r = re.compile(r'[<>=/*+-]+') 

这会匹配集合中的一个或多个字符,但我不知道如何防止它匹配 =或 =>模式。我猜它与负面前瞻或后视有关,但我很难理解这一点。


澄清:我真的想匹配 <>=/*+- 中字符的所有组合除了 =和 => .换句话说,我想找到仅由这些字符组成的最大长度的连续子串——如果子串等于 =或 => , 它不应被视为匹配项。

我为之前没有澄清而道歉,但这似乎是一个足够简单的问题陈述,不需要额外的澄清。

案例:

  • pow pow -> bah bah包含匹配->
  • a +++->* b // c包含匹配 +++->*和 //
  • => 3 <= 4 = 5 == 6包含匹配 <=和 == (请记住,= 和 => 不匹配)
  • a <=> b <@> c包含匹配 <=>和 <和 >
  • ---= =---包含匹配 ---=和 =---

请您参考如下方法:

已编辑:实现了以下 abarnert 的建议:

我会把它分成两部分:

第一部分将返回所有匹配项的列表 - 包括您不希望匹配的“=>”和“=”。

p1 = re.compile(r'[<>=/*+-]+') 

第二部分将过滤掉这些匹配项。

all_matches = p1.finditer(your_string) 
matches = [match.group() for match in all_matches if match.group() not in ('=', '=>')]