私は文字列をコーマに分割し、中括弧の中の式を無視できるパターンを作成しようとしています。正規表現の文字列の分割
既存のコードは、文字列に中かっこの式のグループが1つのみ存在する場合に有効です。私はそれが動作する文字列に
{IIF(Hemo.Site = "LV",1,IIF(Hemo.Site = "SVC",2,IIF(Hemo_Pressures.Site = "AO",3,4)))},Site DESC,Pressure1 ASC
を渡すと
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,{IIF(Hemo.Site = "LV",1,IIF(Hemo.Site = "SVC",2,IIF(Hemo.Site = "AO",3,4)))}, Pressure1 ASC
1は無視されますが、中括弧の他のグループ分けではありません。
これは失敗します。汚れたコレクションが作成されました。
私はこれについて目の第二のペアをいただければ幸いです。
これは、(?![^ {] * \}) 'を試してください。私は網羅的なテストをしていないが、それは私のために働いているようだ。 –
完璧に動作します...私のパターンよりもはるかにエレガントです。 –
'1,2 '、{1,2,3}、4,5、} 6が正しく分割されないなど、分割する必要があるコンマの間に'} 'が含まれているテキストがある場合、問題が見つかりました。うまくいけばそれはあなたにとって問題ではないでしょう。 –