我有以下一行:
{ "diameter":6 } { 60 } {"din":Anchor-1 R 6/5SPx3} {"length":30 } { Impact anchor } {"diameter":6 } { Online:0 } {, de03042 }
我正在尝试删除以下内容:
{ "diameter":6 } { 60 }
更改为{ "diameter":6 }{ 60 }
{ 60}
将从输出中消失。我正在使用以下模式,但它没有提供所需的输出。
s = Regex.Replace(s, @"\s+[{}^]", ""); //Remove whitespace between each element
s = Regex.Replace(s, @"{{ [0-9^}]*}\}", ""); // Remove { 60 }
期望的输出:
{ "diameter":6 }{"din":Anchor-1 R 6/5SPx3}{"length":30 }{ Impact anchor } {"diameter":6 }{ Online:0 }{, de03042 }
当前输出:
{ "diameter":660"din":Anchor-1 R 6/5SPx3}"length":30 Impact anchor HPS-1 R 6/5SPx3"diameter":6 Online:0 de03042
有人可以指出我的模式有什么问题吗?
答案 0 :(得分:5)
您可以使用以下正则表达式:
(?<=})\s*(?={)|{\s*\d+\s*}
替换为string.Empty
。
请参阅demo
结果:
REGEX EXPLANATION :
该模式包含2个备选方案(请注意|
交替运算符)。
(?<=})\s*(?={)
:
(?<=})
- 确保有}
\s*
- 0或更多(*
)空格(\s
)(?={)
- 一个积极的前瞻,确保在空白之后有{
{\s*\d+\s*}
:
{
- 字面上匹配{
\s*
- 0或更多(*
)空格(\s
)\d+
- 一位或多位\s*
- 0或更多(*
)空格(\s
)}
- 字面上匹配}
。