我太近了.我正在尝试使用Notepad ++的代码表示正则表达式,用空格替换短划线,忽略已经有前/后空格的破折号.我意识到我可以用"foobarfoo"搜索/替换" - "然后搜索" - "替换为""然后将"foobarfoo"转换回" - ",但是该死的 - 我正在尝试学习正则表达式!
这是我的问题:
适配器 - BNC公头至BNC母头,直角
至
适配器 - BNC公头到BNC母头,直角
(注意"BNC女"中消失的短划线)
我最接近的是使用这个:
/(?:[^( )])\-(?:[^( )])/g
但结果是它找到前面的单个字母,破折号和下面的单个字母:
适配器 - BNC公头到BN C-F emale,直角
为什么选择前/后字符?这不是:
(?:[^( )]) 找到除空间之外的任何东西(作为非捕获组)......
\- ......紧接着......
(?:[^( )]) ...除了空格之外的任何东西(作为非捕获组)
我更接近的是我替换了第一个术语,(?=[^( )])但是如果我将第三个术语更改为(?![^( )])我回到我开始的地方 - 只需在两个空格之间选择短划线.GRRRR.
更多样本请访问http://regexr.com/444i2