将#字符替换为空格和#字符

Rob*_*ith 3 c# regex string replace

我试图在井号#前面添加一个空格。但是,如果井号前面已经有空格,则不应添加空格。另外,它不应在字符串的首字符添加空格。这是我到目前为止的内容:

string result = Regex.Replace("542#452", @"(?=#)(?!$)", " ");
Run Code Online (Sandbox Code Playgroud)

但这会增加双倍的空格(当一个磅符号已经有一个空格时)。它还在开头添加了一个空格:

样本数据和所需的输出:

Input        Output
243#423      243 #423
22 #44       22 #44
#32#         #32 #
#            #
##           # #
Run Code Online (Sandbox Code Playgroud)

谢谢

The*_*ird 5

您可以断言左侧是非空格字符\S,然后匹配井号并用空格替换,#

(?<=\S)#
Run Code Online (Sandbox Code Playgroud)

例如

string result = Regex.Replace("542#452", @"(?<=\S)#", " #");
Run Code Online (Sandbox Code Playgroud)

正则表达式演示 | C#演示

在此处输入图片说明