我想创建一个模式,使我能够分裂字符串上的昏迷,但忽略大括号内的表达式。正则表达式字符串拆分
如果字符串中只存在一组大括号表达式,那么我现有的代码工作的很好。
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'没有正确分割。希望这对你不会有问题。 –