2012-02-20 76 views
0

我对Notepad ++非常新,并且需要查找和替换功能的一些帮助。我有数控机床代码看起来像这样:Notepad ++查找和替换语法,需要帮助

G1 X0.625 Z1.242 F500.0 
G1 Z0.099 A358.475 F500.0 
G1 X0.542 Z1.247 F500.0 
G1 Z0.100 A356.949 F500.0 
G1 X0.458 Z1.254 F500.0 
G1 Z0.102 A355.424 F500.0 
G1 X0.375 Z1.263 F500.0 

我需要找到一个包含X每行和替换F500.0的值F5.0。我应该使用什么语法?提前致谢。

回答

0

打在ctrl+h在第一个领域把你想找到的东西,在第二个放在你想要取代它。

1

搜索:(X.*)F500\.0

和替换方式:\1F5.0

+0

比我的好。 – 2012-02-20 18:34:34

+0

@TonyMiller:简单一点。但是,根据具体情况,你的工作可能会更好。 – Toto 2012-02-20 18:36:31

+0

正如Tony的回答中所指出的那样,Notepad ++不支持扩展语法。最值得注意的是()分组。 – 2012-02-20 18:43:22

2

我认为这会工作,但它取决于你的数据的变化:

(G1[ ]+X.+[ ]+[A-Z0-9.]+[ ]+)F500\.0 

取代
\1F5.0 

这收集了所有的东西在F500.0的左边(the。是要得到一个文字时期。我放入一个文字G1,然后是空格,然后是X,然后是空格,然后是文字字符,数字和句点重复,最后是F500.0。

我用\ 1取代了这个,这是在括号中收集的东西,然后是F5.0。

参考:NotePad++ Regular Expression Syntax

更新:新增链接到记事本++正则表达式语法

+0

不起作用,因为Notepad ++除BRE外不支持任何其他功能。 – 2012-02-20 18:37:46

+0

你为什么要把“空间”放在角色类里面?这只是一个字符,而不是[],你应该使用\ s。 – sweaver2112 2012-02-20 19:37:18

+0

我在括号中使用了空格,因为我正在使用NotePad ++正则表达式语法帮助,并且没有看到空白字符类。当然,它确实有一个。 – 2012-02-21 19:52:58

-2

记事本++使用basic regular expression syntax。所以,你将会遇到很多问题,试图将它用作Perl兼容正则表达式(PCRE)。

这样做的最好方法是使用实​​际为这些类型的任务设计的工具。 Sed,或者perl一个班轮。例如:

sed -i -r 's/(X.*)F500\.0/\1F5.0/g' yourFile 

-i开关是用于就地编辑,并-r为扩展正则表达式语法。当然,在windows上设置sed是令人恼火的。

所以,你可能会有更好的运气,用一个小的python或perl脚本。另一种选择是记事本++宏。

编辑:

正如M42向我指出,记事本++居然不支持分组,kind of

+1

Sed?真?文本编辑器对搜索/替换来说只是一个优秀的文件,这就是他们所做的事情,毕竟,这只是一些比别人更好。 – sweaver2112 2012-02-20 19:48:16

+0

@ sweaver2112直接搜索/替换不是问题。一旦你进入正则表达式,你开始遇到不一致。人们试图用一个正则表达式来“解析”他们的文本。并想知道为什么他们匹配他们没有想到的东西。并尝试在替换中包含逻辑结构。我指导你一个[这可以导致的例子](http://stackoverflow.com/a/1732454/724357)。 “sed”和“macros”都不适合这个领域,我只是给了选择(与脚本一起去......) – 2012-02-20 20:17:59

+1

-1。 OP通过NotePad ++明确要求。如果您要回答,请回答先要求的内容,然后提供替代方案。 – 2012-02-21 19:54:53