2012-02-20 77 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