我想創建一個模式,使我能夠分裂字符串上的昏迷,但忽略大括號內的表達式。正則表達式字符串拆分
如果字符串中只存在一組大括號表達式,那麼我現有的代碼工作的很好。
Dim expression As New Regex(",(?=(?:[^\{]*\{[^\{]*\})*(?![^\}]*\}))")
Try
parts = expression.Split(sortString)
For Each Item In parts
If Not Item Is Nothing Then
result.Add(Item)
End If
Next
Return result
如果我把這個字符串
{IIF(Hemo.Site = "LV",1,IIF(Hemo.Site = "SVC",2,IIF(Hemo_Pressures.Site = "AO",3,4)))},Site DESC,Pressure1 ASC
它的工作原理,大括號分組被忽略,每個字符串後與昏迷分裂爆發。
問題是。如果我需要在我的字符串中容納多個大括號表達式的分組,並且它開始失敗。
這種失敗:
{IIF(Hemo.Site = "LV",1,IIF(Hemo.Site = "SVC",2,IIF(Hemo_Pressures.Site = "AO",3,4)))},Site DESC,{IIF(Hemo.Site = "LV",1,IIF(Hemo.Site = "SVC",2,IIF(Hemo.Site = "AO",3,4)))}, Pressure1 ASC
分組中的一個被忽略,因爲它應該的,但大括號的另一組是沒有的。導致髒收集。
我會很感激這第二雙眼睛。
試試這個',(?![^ {] * \})''。我沒有做過徹底的測試,但它似乎在爲我工作。 –
作品完美...比我的模式更優雅感謝。 –
如果在應該分割的逗號之間存在包含'}'的文本,我發現了一些問題,例如'1,2,{1,2,3},4,5,} 6'沒有正確分割。希望這對你不會有問題。 –