我有一个与替换文本文件中的某个值有关的问题。
我的文字文件包含:
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 ++。
有人有想法吗?
之前谢谢
答案 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开始匹配,行尾空格位于行尾