Regex-每行匹配一个字符的单个实例/匹配项

Regex-每行匹配一个字符的单个实例/匹配项,regex,powershell,regex-lookarounds,nsregularexpression,Regex,Powershell,Regex Lookarounds,Nsregularexpression,我真的不明白我怎么能同时匹配一个空格或破折号的单个实例。我能够得到一些结果,但仍然无法得到想要的结果。事实上,我已经在regexr.com上尝试了不同的配置,但仍然无法让它工作。[这里是regex学徒] Shell: Powershell Data : "test--asd :45; wth---notcool: 69" Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

我真的不明白我怎么能同时匹配一个空格或破折号的单个实例。我能够得到一些结果,但仍然无法得到想要的结果。事实上,我已经在regexr.com上尝试了不同的配置,但仍然无法让它工作。[这里是regex学徒]

Shell: Powershell
Data : "test--asd :45; wth---notcool:  69"

Index   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
Value   t   e   s   t   -   -   a   s   d       :   4   5   ;       w   t   h   -   -   -   n   o   t   c   o   o   l   :           6   9
测试1正则表达式=
”([\s\-])\1?“

测试2正则表达式=
'([\s\-]){1}'

Testing 1         Testing 2       Desired to be REMOVED 
Index   Value     Index Value     Index Value
-----   -----     ----- -----     ----- -----
4       --        4     -         5     -
9                 5     -         9 
14                9               14    
18      --        14              19    -
20      -         18    -         20    -
29                19    -         30        
                  20    -       
                  29            
                  30            
我想我缺少了一些基本的东西,但是我的主要目标是使用正则表达式将空格和破折号基本上减少到单个实例中,这样字符串就不会凌乱

******* EDIT (Added explanation) *******
基本上,我需要做的是去掉空白,并将多余的破折号转换为单个破折号。这就是为什么我认为我可以创建一个正则表达式来选择(获取索引)空格和额外的破折号(从第二个连续破折号开始),并将它们替换为零(“”)。很抱歉造成混淆,难以说明问题和正确的方法

主要目标如下所示,我需要去掉黄色的:

我想你想要:

  • 空格替换为空
  • 多个破折号简化为一个破折号
这意味着任何匹配(空格或破折号)的正则表达式都必须有一个替换值,根据它是否匹配空格或破折号而变化。可能,但很烦人

相反,我将对其进行重新表述,使两种情况下的替换值相同-空字符串-这将使应该替换的内容:

  • 破折号后面的一个或多个破折号将被替换为零,前面的破折号将保持不变
  • 空间
这将是:

PS C:\> "test--asd :45; wth---notcool:  69" -replace '(?<=-)-+|\s'
test-asd:45;wth-notcool:69

PS C:\>“test--asd:45;wth--notcool:69”-replace'(?您期望的输出是什么?嘿@TimBiegeleisen!它的标签是
“期望的输出”
所以你只想用一个实例替换2个或更多的实例?空格也是如此?这是午餐时间,伙计们对不起!TessellingHeckler说的其实是亲密的朋友。我只需要更改重复的连字符(破折号)作为一个单破折号,并删除空格,这样我就可以只寻找一个带附近破折号和空白的单破折号(我认为这不是正确的逻辑)。@EBGreen“在陈述问题时有困难”-如果你有一个小的、精确的语言来描述文本模式来帮助你;-)为混淆道歉,但这真的很接近!为了清晰起见,我添加了更多信息。我知道我可以将另一个
Replace
方法链接到结果中,将空格更改为nothing,但我想探索regex是否能够像我所希望的输出一样同时替换多个字符@太多男人了@Tessellinghecklerhey mannn如果我让你读我最新的问题可以吗?很抱歉打扰你@镶嵌切克勒