【发布时间】:2015-06-07 18:17:28
【问题描述】:
组,
这是我的第一篇文章。我喜欢使用 Notepad++ 进行 cnc 程序 g-code 编辑。有时,程序会包含单词之间没有空格的文本。注释包含在括号之间。有时行包含 cmets,但大多数时候不包含:
G90G10L2P1X-38.046Y-11.361Z-36.991(G54 B=0)
G90G10L2P1X5.68Y5.69
G54G00G90X0.0Y-5.0T53
G43H55Z6.0M8
S300M03
此正则表达式将在所有单词之间添加一个空格,但会跳过以括号结尾的行:
搜索:(.)([A-Z])(?!.*\))
替换:\1 \2\3
到目前为止一切顺利。我想要的是在所有单词之间添加空格,只排除 cmets,而不是像上面那样跳过包含 cmets 的整行。
任何想法或帮助将不胜感激!我一直在玩这个,并在谷歌上搜索了很多,但没有成功。
** 编辑我的帖子以显示更复杂的示例 2015 年 4 月 8 日:
(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****
将在文本文件中的每个括号实例后添加星号。
我只是想不通从本文其他地方描述的更广泛的搜索中排除相同的正则表达式。
这不起作用 - 仍然在括号内添加空格。下划线=空格:
Search: (?!\(.+\))([a-z]-?\d+(?:\.\d+)?)
Replace: $1_
【问题讨论】:
-
您可能需要添加正则表达式标签。
-
什么是你的“词”?预期的结果是什么?
-
在cnc程序中,单词是一个字母后跟数字。
-
你如何定义一个“词”?
-
在后面的例子中,G43H55Z6.0M8 应该是这样的:G43 H55 Z6.0 M8