在Notepad ++中查找并替换小于或大于某个值的数字

时间:2014-04-09 01:59:01

标签: replace find conditional text-files notepad++

我有一个与替换文本文件中的某个值有关的问题。

我的文字文件包含:

 x              y                  z
 979999.088252  994114.506680      -1
 979999.053624  995441.988245      -4
 979999.495066  905496.233609      -3
 979999.380029  905467.292380      0
 979999.338490  905554.964370      5
 979999.910165  905624.191735      2

我想将值大于2(z> 2)的值替换为值2(z = 2)。

我正在使用Notepad ++。

有人有想法吗?

之前谢谢

1 个答案:

答案 0 :(得分:1)

在搜索和替换中选择正则表达式选项,并使用[3-9]$| [1-9][0-9][0-9]*$作为查找内容,2作为替换文本(两者都有前导空格)。

找到文字的内容是:在行尾之前的3到9之间的空格后跟一个空格,或者在行尾之前有一个空格后跟两位或更多位数

它与减号不匹配,因此不会被替换。它与一个小数位的anthing不匹配(我不知道你是否想要那个)。该数字必须以空格开头(如果您使用制表符,则需要更改它)。并且在数字后面不能有任何空格/制表符,因此它必须位于该行的末尾。

好的,回答评论中的问题。如果数据包含带有小数点的浮点值,并且您想要将大于2的任何值更改为2,则可以使用此[2-9](?:\.[0-9]+)?$| [1-9][0-9]+(?:\.[0-9]+)?$作为查找文本,2作为替换文本(两者都是他们有一个领先的空间。)

工作方式可能需要一些解释。

  • [0-9]匹配0到9之间的所有ASCII值(所有数字)
  • X+匹配X
  • 中的一个或多个
  • [0-9]+匹配1个或多个[0-9](一串数字)
  • \.匹配一个文字句点(需要用\来表示,因为。表示其他内容)
  • \.[0-9]+匹配小数点后跟一串数字
  • (?:X)是一个与X匹配的非捕获组 - 它只是一种将事物组合在一起的方式
  • (":\.[0-9]+)是一个包含小数点后跟一串数字
  • 的组
  • X?匹配X的0或1(使​​X可选)
  • (":\.[0-9]+)?是一个可选组,包含一个小数点后跟一个数字字符串
  • [2-9]匹配2到9之间的任何ASCII值
  • [2-9](":\.[0-9]+)?匹配2到9.9999999之间的任何整数或浮点数...
  • [2-9](":\.[0-9]+)?(带前导空格)匹配介于2和9.9999999之间的任何整数或浮点数...具有前导空格
  • [2-9](":\.[0-9]+)?$(带有前导空格)匹配2到9.9999999之间的任何整数或浮点数...其前导空格位于行尾
  • [1-9]匹配1到9之间的任何ASCII值
  • [1-9][0-9]+匹配10 up
  • 中的任何整数
  • [1-9][0-9]+(":\.[0-9]+)?匹配10 up
  • 中的任何整数或浮点数
  • [1-9][0-9]+(":\.[0-9]+)?(带有前导空格)匹配10个以上带有前导空格的任何整数或浮点数
  • [1-9][0-9]+(":\.[0-9]+)?$(带有前导空格)匹配从10开始的任何整数或浮点数,以及位于行尾的前导空格
  • X|Y匹配X或Y
  • [2-9](":\.[0-9]+)?$| [1-9][0-9]+(":\.[0-9]+)?$(带有前导空格)匹配介于2和9.9999999之间的任何整数或浮点数...或者从10开始匹配,行尾空格位于行尾