我非常接近了。我正在尝试编写一个正则表达式,用于在Notepad++中将破折号替换为空格,并“忽略”已经具有前/后空格的破折号。我意识到我可以使用“ - ”替换为“ foobarfoo”,然后搜索“-”,用“ ”替换,然后将“ foobarfoo”转换回“ - ”,但该死的——我正在尝试学习正则表达式!
这是我的问题:
适配器-BNC男头到BNC女头,直角
to
适配器-BNC男头到BNC女头,直角
(注意“BNC Female”中消失的破折号)
我最接近的方法是使用: /(?:[^( )])\-(?:[^( )])/g
但结果会找到前面的单个字母、破折号和后面的单个字母:
适配器-BNC男头到BNC-Female,直角
为什么它选择前/后字符?这不是:
(?:[^( )]) 找到除空格之外的任何内容(作为非捕获组)...
这是我的问题:
适配器-BNC男头到BNC女头,直角
to
适配器-BNC男头到BNC女头,直角
(注意“BNC Female”中消失的破折号)
我最接近的方法是使用: /(?:[^( )])\-(?:[^( )])/g
但结果会找到前面的单个字母、破折号和后面的单个字母:
适配器-BNC男头到BNC-Female,直角
为什么它选择前/后字符?这不是:
(?:[^( )]) 找到除空格之外的任何内容(作为非捕获组)...
\-
... 后面跟着一个破折号 ...
(?:[^( )])
... 并且后面跟着任何不是空格的内容(作为非捕获组)
如果我用(?=[^( )])
替换第一个术语,我会更接近,但如果我将第三个术语更改为(?![^( )])
,我又回到了起点 - 只选择两个空格之间的破折号。 GRRRR.
更多样例在这里 http://regexr.com/444i2
\ b- \ b
? - bobble bubble<space>-<space>
,但看起来你还想避免<space>-
和-<space>
,是这样吗? - Wiktor Stribiżew