正则表达式不包括Notepad ++ search&中的括号中的文本。更换

时间:2015-04-02 17:29:27

标签: regex notepad++

组,

这是我的第一篇文章。我喜欢使用Notepad ++进行cnc程序g代码编辑。有时程序将包含单词之间没有空格的文本。注释包含在括号中。有时行包含注释,但大多数情况下不包含注释:

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

到目前为止一切顺利。我想要的是在所有单词之间添加空格,只排除注释,而不是跳过包含上述注释的整行。

任何想法或帮助将不胜感激!我一直在玩这个,并且谷歌搜索它没有成功。

**编辑我的帖子以显示更复杂的例子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****

将在文本文件中的每个圆括号后添加星号。

我无法想象如本文其他地方所述,从更广泛的搜索中排除相同的正则表达式。

这不起作用 - 仍然在括号内添加空格。下划线=空间:

Search: (?!\(.+\))([a-z]-?\d+(?:\.\d+)?)
Replace: $1_

4 个答案:

答案 0 :(得分:1)

这对您而言:

找到:(?<!\()([a-z]-?\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 

答案 1 :(得分:0)

如果你定义一个单词&#39;作为一个字母后跟数字,然后这个正则表达式将捕获它们:

([a-zA-Z][0-9.-]+)

然后你可以用\1替换它们(反斜杠一个空格)。

答案 2 :(得分:0)

很难确定你真正认为的“单词”,但是使用你的例子和评论,我把我想你想要的东西放在一起。无论哪种方式,这不是你真正的问题。问题是排除评论,这确实有效:

搜索:(\(.*?\))|([a-z](?=[-#.\d])([-#]?\d*(\.\d*)?))

替换:$1$2_ [空格下划线]

交替的第一部分(\(.*?\))捕获任何评论,将它们混淆,以便它们不会与交替的第二部分相匹配

注意:您最终会在每行的末尾添加一个空格,但这在Notepad ++菜单上很容易修剪。

答案 3 :(得分:-1)

嗨,我也是一名粉丝程序员...我使用notepad++ 我来了

(\(.*?\))|([0-9]|(]))([A-Z])

并替换为

\1\2 \4

它让一个空间结束但是......

我将(])添加到

x#750z0

我有另一种选择。

搜索:((。?))|([。?])|([0-9] |(]))([AZ])|((])(那么| DO | GOTO))([AZ])

写:\ 1 \ 2 \ 3 \ 4 \ 6 \ 7 \ 5