首页 > 解决方案 > 我如何编写一个正则表达式来查找除 2000 或 1990 或 1234 这样的 4 位数字之外的所有内容?

问题描述

我有这样的文字:

Film_relase_date:1970_films_by_20th_Century_Fox

我想创建一个匹配除 1970 之外的所有文本的正则表达式,结果是:

Film_relase_date:_films_by_20th_Century_Fox

我尝试使用正则表达式:

[^\d{4}]

但是这个正则表达式返回:

Film_relase_date:_films_by_th_Century_Fox

因此也排除了我想要匹配的 20 个。如何改进正则表达式?

编辑:我想使用这个正则表达式来做类似的事情:

x = 'Film_relase_date: 1970_films_by_20th_Century_Fox'

REPLACE (x, "Anything that is not a 4-digit number", "Non-Space") = 1970

标签: pythonregex

解决方案


请记住,{4}应该添加after字符类,而不是内部。

无论如何,如果您想匹配“除 1970 之外的所有文本”,您可以使用以下正则表达式:

([^\d]|(?<!\d)\d(?!\d{3}(?!\d))\d*)?

演示

此正则表达式匹配:

  • 非数字字符
  • 一个数字字符,前面也没有另一个数字,并且后面不是正好 3 位数字

推荐阅读