C# 需要正则表达式的帮助来解析表达式吗

C# 需要正则表达式的帮助来解析表达式吗,c#,regex,C#,Regex,我有一个表达: ((((the&if)|sky)|where)&(end|finish)) 我需要的是在符号和单词之间留出一个空格,这样它就会像: ( ( ( ( the & if ) | sky ) | where ) & ( end | finish ) ) 我提出的正则表达式是(\w)*[(\&*)(\\\&*)],它只让我: ((((天空)哪里)和(结束)结束)) 我能从一位常驻的正则表达式大师那里得到一点帮助吗?我将在C#中使用此选项。编辑:既然您正

我有一个表达:

((((the&if)|sky)|where)&(end|finish))
我需要的是在符号和单词之间留出一个空格,这样它就会像:

( ( ( ( the & if ) | sky ) | where ) & ( end | finish ) )
我提出的正则表达式是
(\w)*[(\&*)(\\\&*)]
,它只让我:

((((天空)哪里)和(结束)结束))


我能从一位常驻的正则表达式大师那里得到一点帮助吗?我将在C#中使用此选项。

编辑:既然您正在使用C#,请尝试以下操作:

output = Regex.Replace(input, @"([^\w\s]|\w(?!\w))(?!$)", "$1 ");
在符合以下条件的任何字符后插入空格:

  • 既不是字母、数字、下划线,也不是空白
    • 或者是一个单词字符,后面没有另一个单词字符
  • 而且不在一行的末尾

resultString=Regex.Replace(subjectString,@“\b|)(?您可以在每个单词和每个非单词字符后添加一个空格(因此查找
\W|\W+
并将其替换为匹配项和空格。例如,在Vim中:

:s/\W\|\w\+/\0 /g
您可以使用:

(\w+|&|\(|\)|\|)(?!$)
这意味着一个单词,或者一个
&
符号,或者一个
符号,或者一个
符号,或者一个
|
符号后面没有字符串结尾;然后用匹配+空格符号替换匹配。使用c#可以像这样完成:

var result = Regex.Replace(
                 @"((((the&if)|sky)|where)&(end|finish))", 
                 @"(\w+|&|\(|\)|\|)(?!$)", 
                 "$+ "
             );
现在
result
变量包含一个值:

( ( ( ( the & if ) | sky ) | where ) & ( end | finish ) )

我发现这个网站有助于开发和测试正则表达式模式:这将导致像
helloworld
这样的东西被转换成
helloworld
(3个空格)。不过,我不确定这是否是一个问题。
var result = Regex.Replace(
                 @"((((the&if)|sky)|where)&(end|finish))", 
                 @"(\w+|&|\(|\)|\|)(?!$)", 
                 "$+ "
             );
( ( ( ( the & if ) | sky ) | where ) & ( end | finish ) )