python - 使用正则表达式根据特定条件排除数字

标签 python regex

我正在尝试匹配并提取数字,如果:

  • 他们不是单例 2
  • 他们不是单例 4
  • 它们不是 4 位数字

*注意:数字在字符串中的位置是完全随机的 - 数字可以出现在开头、中间或结尾,并且可以是除 4 之外的任意长度。

下表包含字符串和所需匹配项的示例。

<表类=“s-表”> <标题> 文本 所需的比赛 <正文> 你好123 123 B4UGO 1984年动物农场45 45 2 GO 其他 1000 个 22 和 44 和 1234567 22, 44, 1234567 测试567TRUE 567

我发现一篇 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+

See this demo at regex101

在第一个负向展望内向前不允许的数字得到 alternatedgroup .

关于python - 使用正则表达式根据特定条件排除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74621957/

相关文章:

python - 机器人框架 : Open a chrome browser without launching URL

python - 从不同目录访问模块

python - 通过过滤生成不同(距离远,按编辑距离)单词的列表

regex - 如何使用 : g command in order to requirements?

python - 使用正则表达式在 Python 中分割句子

python - 精神病学中的审判处理者和时间测量

python - 使用Python连接Docker容器中的MySQL

python - 设计一个 RE 来过滤单词

regex - gnu 找到 : apply -regex on basename only

javascript - 如何在正则表达式中隔离字符串后的一定数量的字符