需要的行爲存在問題。正則表達式:按分隔符分割字符串,然後按另一個分割字符串
假設有一個
sourceString = @"name1$$value1^name2$$value2^name3$$value3";
也許更多一長串......
我想先通過^
分離分割,然後由另一$$
基於此命名值來創建字典對。
此字符串存儲在文件中,因此可能太長,任何拆分操作可能會花費太多時間。 我希望有一個正則表達式匹配^
和內部羣匹配$$
。
需要的行爲存在問題。正則表達式:按分隔符分割字符串,然後按另一個分割字符串
假設有一個
sourceString = @"name1$$value1^name2$$value2^name3$$value3";
也許更多一長串......
我想先通過^
分離分割,然後由另一$$
基於此命名值來創建字典對。
此字符串存儲在文件中,因此可能太長,任何拆分操作可能會花費太多時間。 我希望有一個正則表達式匹配^
和內部羣匹配$$
。
這個正則表達式(.*?)\$\$(.*?)(?:\^|$)
將匹配名稱值對,這裏是一個Rubular to prove it。並使用它,你可以使用下面的代碼:
var input = "name1$$value1^name2$$value2^name3$$value3";
var pattern = @"(.*?)\$\$(.*?)(?:\^|$)";
var hash = new Dictionary<string, string>();
var match = Regex.Match(input, pattern);
while (match.Success)
{
hash.Add(match.Groups[1].Value, match.Groups[2].Value);
match = match.NextMatch();
}
爲什麼不使用:
sourceString.Split(new char[] {'^'}, StringSplitOptions.RemoveEmptyEntries)
然後你就可以使用$$
正如我前面提到的那樣,這將是一項耗時的操作。 –
你確定一個簡單的拆分比正則表達式更費時嗎? – okrumnow
現在我正在做檢查^)但要檢查我需要一個正確的正則表達式第一。 Ps無論如何,我敢肯定... –
我想這是做同樣的@「((? 。*?))\ $ \ $(?(。*?))(?:\^| $) –
@ Lonli-Lokli,是的,這是正確的你看過Rubular嗎? –
是的,我剛剛修改了LINQPad的變體,Thx爲你的版本! –