[英]Regex excluding text between parentheses in Notepad++ search & replace
組,
這是我的第一篇文章。 我喜歡使用Notepad ++進行cnc程序g代碼編輯。 有時程序會包含文字,單詞之間沒有空格。 括號之間包含注釋。 有時,行中包含注釋,但大多數時候不包含注釋:
G90G10L2P1X-38.046Y-11.361Z-36.991(G54 B=0)
G90G10L2P1X5.68Y5.69
G54G00G90X0.0Y-5.0T53
G43H55Z6.0M8
S300M03
此正則表達式將在所有單詞之間添加一個空格,但會跳過以括號結尾的行:
搜索: (.)([AZ])(?!.*\\))
替換: \\1 \\2\\3
到現在為止還挺好。 我想要的是在所有單詞之間添加空格,僅排除注釋,而不是跳過包含上述注釋的整行。
任何想法或幫助將不勝感激! 我一直在玩這個游戲,並且搜索了很多都沒有成功。
**編輯我的文章以顯示更多復雜的示例4/8/15:
(FILE NAME XY9032.010)
(SUB PR.321.322.323.327.328.329.325.324)
(** NONSENSE COMMENT TEXT 324 TO SHOW A DIFF POSSIBLE COMB AB 2/25/15 **)
N1(STORE TOP BOSS G55.X)
N2(STORE BOT. BOSS G55.X)
N3(STORE BOT. BOSS G55.Y)
G00G17G40G49G80G90
G91G28X0Y0Z0.M05
G90G0B0
N4G90G10L2P5X-38.046Y-11.361Z-37.021(G58 B0 BOTTOM BORES)
N5G90G10L2P6X-23.130Y-11.361Z-44.027(G59 B180 BOTTOM BORE)
G90G10L2P1X#568Y#569
G54G00G90X0.0Y-5.0T53
G43H55Z6.0M8
S300M03
Z.6
N6G01Z.015F50.
G01Y-7.0F9.0
G02J7.0F18.0
G00Z6.0M09
G91G28X0Y0Z0M05
M1
這個小的正則表達式將找到括號之間的所有文本實例:
(\(.+\))
例如,搜索:
(\(.+\))
更換:
\1****
將在文本文件中每個括號后面加上星號。
我只是想不出從本文其他地方描述的更廣泛的搜索中排除相同的regex表達式。
這不起作用-仍在括號內添加空格。 下划線=空間:
Search: (?!\(.+\))([a-z]-?\d+(?:\.\d+)?)
Replace: $1_
這樣適合您嗎?
查找內容: (?<!\\()([az]-?\\d+(?:\\.\\d+)?)
替換為: $1_
我用_
可視化空間
使用您的測試用例,它可以:
G90 G10 L2 P1 X-38.046 Y-11.361 Z-36.991 (G54 B=0)
G90 G10 L2 P1 X5.68 Y5.69
G54 G00 G90 X0.0 Y-5.0 T53
G43 H55 Z6.0 M8
S300 M03
如果將“單詞”定義為字母后跟數字,則此正則表達式將捕獲它們:
([a-zA-Z][0-9.-]+)
然后,您可以將它們替換為\\1
(反斜杠一個空格)。
很難確定您真正認為的“單詞”,但是使用您的示例和注釋,我匯總了我認為您想要的內容。 無論哪種方式,這都不是您真正的問題。 問題不包括評論,這可以有效地做到:
搜索: (\\(.*?\\))|([az](?=[-#.\\d])([-#]?\\d*(\\.\\d*)?))
替換: $1$2_
[下划線表示空格]
交替的第一部分(\\(.*?\\))
捕獲所有注釋,將它們吸引下來,以便它們不會與交替的第二部分匹配
注意:您最終將在每行的末尾都有一個空格,但這是在Notepad ++菜單上的簡單修飾。
嗨,我也是fanuc程序員...我使用notepad++
,我來
(\(.*?\))|([0-9]|(]))([A-Z])
並替換為
\1\2 \4
最后留個空格
我將(])
添加到
x#750z0
我有另一個選擇。
搜索:((。 ?))|([。 ?])|([0-9] |([]))([AZ])|(([](Then | DO | GOTO))([AZ])
寫:\\ 1 \\ 2 \\ 3 \\ 4 \\ 6 \\ 7 \\ 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.