代码之家  ›  专栏  ›  技术社区  ›  Cees Timmerman

查找字符串前面没有其他字符串

  •  2
  • Cees Timmerman  · 技术社区  · 8 年前

    我只想得到 ['bar'] 在这里:

    >>> re.findall(r"(?<!\bdef )([a-zA-Z0-9.]+?)\(", "def foo(): bar()")
    ['oo', 'bar']
    

    这在一个正则表达式中是可能的吗?如果没有,我会先用这个: re.sub(r"\bdef [a-zA-Z0-9.]+", "", "def foo(): bar()")

    1 回复  |  直到 8 年前
        1
  •  4
  •   Wiktor Stribiżew    8 年前

    oo foo oo( "def "

    \b r"\b(?<!\bdef )([a-zA-Z0-9.]+?)\("

    [a-zA-Z_][a-zA-Z0-9_]

    re.findall(r'\b(?<!\bdef\s)([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)\(', s, re.A)
    

    re.A or re.ASCII \w _

    regex demo

    • (?<!\bdef\s) def
    • ([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*) re.findall
      • [a-zA-Z_]
      • \w*
      • (?:
        • \.
    • )*
    • \( (