我正在尝试拆分下面的文本,因此字符串被空格分割,除非标记在引号之间。意外的结果是它也被分割为我不想要的.
字符。
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
答案 0 :(得分:2)
您可以交换子表达式,然后用\S
代替\w
和
它应该工作。 (".*?"|\S+)
要在不捕获引号的情况下执行此操作,此"(.*?)"|(\S+)
只有
一组将包含数据。为此,你需要找到下一个,直到完成
每个人都发现你可以连接两组。