對於RegEx我沒有什麼好處,所以不太瞭解我借用的代碼中發生了什麼。我想分割以下字符串:如何拆分空格,保留空格並且不會丟失等於
CHARM CARD_SLOT=1 IO_SUBSYSTEM="CHARMS" CONTROLLER="CIOC-CB3-IO" DEFINITION="CHMIO_DO_24_VDC_HIGH-SIDE_CHARM"
所以這是個別字符串,如:(我想回到什麼)
CHARM CARD_SLOT=1
IO_SUBSYSTEM="CHARMS"
CONTROLLER="CIOC-CB3-IO"
DEFINITION="CHMIO_DO_24_VDC_HIGH-SIDE_CHARM"
我使用這個代碼:
while (null != (workString = s.ReadLine()))
{
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"((""((?<token>.*?)(?<!\\)"")|(?<token>[\w]+))(\s)*)", options);
var result = (from Match m in regex.Matches(workString)
where m.Groups["token"].Success
select m.Groups["token"].Value).ToList();
foreach (string o in result)
{
if (!o.Contains("{") || !o.Contains("}"))
{
endResult = endResult + "\r\n" + o;
Console.WriteLine("'{0}'", "\r\n" + o);
}
}
}
我目前正在返回的內容
CHARM
CARD_SLOT
1
IO_SUBSYSTEM
CHARMS
CONTROLLER
CIOC-CB3-IO
DEFINITION
CHMIO_DO_24_VDC_HIGH-SIDE_CHARM
嘗試'Regex.Matches(s,@「([^ =] +)=(\ S +)」)。Cast().Select(m => new [] {m.Groups [1] .Value ,m.Groups [2] .Value})',參見http://ideone.com/yVIOCp。或者甚至可以用['([^ = \ s] [^ =] *)=(\ S +)'](http://ideone.com/f98s8P)正則表達式來嘗試。 –
如果你想在一行中使用'CHARM CARD_SLOT = 1',那麼你不會在所有空間上分裂。 – Flater