在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++。

有人有主意吗?

感谢

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

文本所说的发现是:在行尾前一个空格后面跟着一个3到9之间的一位数,或者在行尾之前一个空格前面跟着一个两位数或两位数以上的数字

它与减号不匹配,因此它们不会被替换。它与小数点不匹配(我不知道你是否想要)。数字前面必须加一个空格(如果使用制表符,则需要更改它)。数字后面不能有空格/制表符,所以它必须在行的末尾。

好的,回答评论中的问题。如果数据包含带小数点的浮点值,并且您想将大于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.99999999之间的任何整数或浮点数…,该整数或浮点值在行的末尾有前导空格
  • [1-9]匹配1到9之间的任何ASCII值
  • [1-9][0-9]+匹配10以上的任意整数
  • [1-9][0-9]+(":.[0-9]+)?匹配10以上的任何整数或浮点数
  • [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开始,带位于行末尾的前导空格

最新更新