string strA = "Cmd:param1:'C:\\SomePath\SomeFileName.ext':param2";
string strB = "Cmd:'C:\\SomePath\SomeFileName.ext':param2:param3";
我想拆就這個字符串的一些字符串「:」這樣我就可以提取的N個參數。有些參數可以包含文件路徑[如顯式]所示,我不想在括號內的':'上進行分割。我可以用一個正則表達式來做這件事,但我很困惑如何在冒號兩邊都沒有「'」的情況下才能分解正則表達式。
我試圖
string regex = @"(?<!'):(?!')";
string regex = @"(?<!'(?=')):";
是繼續匹配,只有在沒有「「」在左,沒有「」」右邊(後面/前面負的樣子),但是這仍然是在分裂包含在'C:\ SomePath \ SomeFileName.ext'中的冒號。
如何根據需要修改此正則表達式?
謝謝你的時間。
注:我發現以下的正則表達式的工作。然而,我想知道是否有更好的方法來做到這一點?
string regex = @"(?<!.*'.*):|:(?!.*'.*)";
使用單引號分隔Windows路徑並不像使用雙引號那麼聰明;單引號是路徑中的合法字符,而雙引號不是,因此使用雙引號(即使它們必須被轉義)會使解析起來更容易。 – JAB
@JAB你絕對是對的,但與大多數事情一樣,這是一個遺留物,我留下來處理從許多衛星以前做出的設計決定... – MoonKnight