我想匹配 <>=/*+- 的所有组合除了 =和 => .我该怎么做?
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 ('=', '=>')]
