我正在尝试匹配并提取数字,如果:
- 他们不是单例 2
- 他们不是单例 4
- 它们不是 4 位数字
*注意:数字在字符串中的位置是完全随机的 - 数字可以出现在开头、中间或结尾,并且可以是除 4 之外的任意长度。
下表包含字符串和所需匹配项的示例。
我发现一篇 SO 文章开始解决 single 2 和 single 4 问题 here 。到目前为止,我的正则表达式是 '\b(?!2\b|4\b|\d{4})\d+\b'
,但这要求数字是独立的(由空格包围),并且也不会提取具有 4 位数字但超过它的数字(例如 1234567)。如果有人有一些想法,我将不胜感激。
最佳答案
您可以使用否定 lookarounds (?<!\d)
和(?!\d)
作为边界:
(?<!\d)(?!([24]|\d{4})(?!\d))\d+
在第一个负向展望内向前不允许的数字得到 alternated在 group .
关于python - 使用正则表达式根据特定条件排除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74621957/