只有在 C# 中没有 space 时,才将正斜杠替换为 space 前后
Replace forward slash with space before and after only if no space in C#
我有以下输入:
aaa/bbb
ccc/ ddd
eee /fff
ggg / hhh
/iii/jjj/
我想确保所有正斜杠(字符串末尾的斜杠除外)前后都有 space。结果将是:
aaa / bbb
ccc / ddd
eee / fff
ggg / hhh
/iii / jjj/
到目前为止,我有以下正则表达式:
(?<=\/)(?!$)
但这还远未奏效。如果能为此找出正确的正则表达式,我们将不胜感激。语言是C#。
您可以使用
var output = Regex.Replace(text, @"\s*(?<!^\s*)/(?!\s*$)\s*", " / ", RegexOptions.Multiline);
详情:
\s*
- 零个或多个空格
(?<!^\s*)
- 如果行的开头紧接着左边有零个或多个空格 ,则否定后视会导致匹配失败
/
- 一个 /
字符
(?!\s*$)
- 如果有零个或多个空格后跟紧跟在右侧的行尾位置,则匹配失败的否定前瞻
\s*
- 零个或多个空格。
或者,另一种变体:
var output = Regex.Replace(text, @"(?<=(?<!^)/(?!\s|$))|(?=(?<!^|\s)/(?!$))", " ");
参见 this regex demo。
详情:
(?<=(?<!^)/(?!\s|$))
- /
之后的位置,既不在字符串的开头也不在字符串的结尾,并且后面没有空格
|
- 或
(?=(?<!^|\s)/(?!$))
- /
之前的位置,既不在字符串的开头也不在字符串的结尾,并且前面没有空格。
我有以下输入:
aaa/bbb
ccc/ ddd
eee /fff
ggg / hhh
/iii/jjj/
我想确保所有正斜杠(字符串末尾的斜杠除外)前后都有 space。结果将是:
aaa / bbb
ccc / ddd
eee / fff
ggg / hhh
/iii / jjj/
到目前为止,我有以下正则表达式:
(?<=\/)(?!$)
但这还远未奏效。如果能为此找出正确的正则表达式,我们将不胜感激。语言是C#。
您可以使用
var output = Regex.Replace(text, @"\s*(?<!^\s*)/(?!\s*$)\s*", " / ", RegexOptions.Multiline);
详情:
\s*
- 零个或多个空格(?<!^\s*)
- 如果行的开头紧接着左边有零个或多个空格 ,则否定后视会导致匹配失败
/
- 一个/
字符(?!\s*$)
- 如果有零个或多个空格后跟紧跟在右侧的行尾位置,则匹配失败的否定前瞻\s*
- 零个或多个空格。
或者,另一种变体:
var output = Regex.Replace(text, @"(?<=(?<!^)/(?!\s|$))|(?=(?<!^|\s)/(?!$))", " ");
参见 this regex demo。
详情:
(?<=(?<!^)/(?!\s|$))
-/
之后的位置,既不在字符串的开头也不在字符串的结尾,并且后面没有空格|
- 或(?=(?<!^|\s)/(?!$))
-/
之前的位置,既不在字符串的开头也不在字符串的结尾,并且前面没有空格。