正则表达式替换一个单词中间的连字符

Jam*_*mes 2 .net regex

我需要一个正则表达式来替换任何单词中间的连字符,但不要触及前导或尾随或单独的连字符.这适用于Regex.Replace()中的.NET

我尝试了以下内容

\w[-]\w
Run Code Online (Sandbox Code Playgroud)

但这也捕获了连字符两侧的字符.举个例子,我需要的是以下字符串

- 测试 - 测试 - 测试

如果替换字符是!,成为

- 测试!测试 - 测试

任何帮助都很受欢迎

谢谢

詹姆士

Nik*_*uhe 6

如果我正确理解了这个问题,那就是匹配连字符,而不是旁边的单词.这是一个类似perl的正则表达式:

(?<=\w)-(?=\w)
Run Code Online (Sandbox Code Playgroud)

这是一个积极的后视断言,一个连字符和一个积极的先行断言.