分享
三行代码  ›  专栏  ›  技术社区  ›  N90J

包含数字但不包含其他数字的正则表达式[重复]

  •  0
  • N90J  · 技术社区  · 1 周前

    所以我有下面的正则表达式。我也尝试了不同的变体,但不幸的是,它不会起作用。

    所以如果我有下面的字符串并想提取 23, 22 and 38 . 但我不希望它提取用连字符分隔的数字,也不提取负数: - .

    string = 'Have to find 23, but not 44-58 and definitely not 88-99 but do find 22 & 38' 
    
    my_regex = re.compile(r'(\d+)|^((?![0-9]+[^-]^[0-9]+).)*$', flags=re.I)
    print(my_regex.findall(string))
    

    1 回复  |  直到 1 周前
        1
  •  0
  •   npinti    1 周前

    你可以这样做: \b(?<!-)\d+(?!-)\b . 这将基本上查找前面没有 - - 用消极的后看和消极的向前看。

    例子 here .

    注:该 \b 1 (因为后面没有 - )以及 4 (因为它前面没有 ).