正则表达式用于基于空格分隔符拆分文本

时间:2017-02-26 19:35:27

标签: c# regex split

我正在尝试拆分下面的文本,因此字符串被空格分割,除非标记在引号之间。意外的结果是它也被分割为我不想要的.字符。

string txt = "PROGRAM \"My ETABS\" VERSION \"9.7.4\" MERGETOL 0.1";

string[] split = Regex.Matches(txt, "(\\w+|\".*?\")")
                      .Cast<Match>()
                      .Select(m => m.Value)
                      .Select(o => o.Replace("\"", ""))
                      .ToArray();

我得到了什么:

PROGRAM  
My ETABS
VERSION 
9.7.4"  
MERGETOL
0
1

我需要什么:

PROGRAM  
My ETABS
VERSION 
9.7.4"  
MERGETOL
0.1

1 个答案:

答案 0 :(得分:2)

您可以交换子表达式,然后用\S代替\w
它应该工作。 (".*?"|\S+)

要在不捕获引号的情况下执行此操作,此"(.*?)"|(\S+)只有 一组将包含数据。为此,你需要找到下一个,直到完成 每个人都发现你可以连接两组。