我有一個文本字段,接受用戶輸入的字符串的形式列表的形式。我有兩個主要的分隔符,一個空格和一個逗號。c#正則表達式列表解析
如果列表中的項目包含多個單詞,用戶可以通過將其用引號引起來對其進行定製。
樣品輸入:
Apple, Banana Cat, "Dog starts with a D" Elephant Fox "G is tough", "House"
所需的輸出:
Apple
Banana
Cat
Dog starts with a D
Elephant
Fox
G is a tough one
House
我一直努力讓一個正則表達式這一點,我無法弄清楚如何讓逗號。以下是我迄今爲止:
Regex.Matches(input, @"(?<match>\w+)|\""(?<match>[\w\s]*)""")
.Cast<Match>()
.Select(m => m.Groups["match"].Value.Replace("\"", ""))
.Where(x => x != "")
.Distinct()
.ToList()
感謝您的支持。我基本上希望不必寫一個解析器。我肯定認爲你是正確的,但需要做到這一點。看起來像很好的僞代碼。我非常擅長編寫解析器,我只是希望能夠使用正則表達式。再次感謝。 – Mark 2010-10-26 04:29:48
@Mark,我會認真考慮使用正則表達式來獲得下一個項目,然後按照這個數量減少項目列表,例如:(1)去掉'^ [,] *',如果字符串空; (2)如果下一個字符是''',得到'^「[^」] *「'並且移除''''然後去掉那個長度並返回1;(3)得到'^ [^,] * [,]',刪除結尾字符,去掉這個長度並回到1。這可能會大大簡化解析器。 – paxdiablo 2010-10-26 10:50:57