CaseElseが含まれていないSelectCaseステートメントを見つける正規表現を探しています。
これが私がこれまでに思いついたものです
(?sm)^\s*Select Case.*(?<!^\s*Case Else.*)End Select
これは、ネストされたステートメントがある場合を除いて、完全に機能します。
バランスグループを使おうとすると、次のことが思い浮かびました。
Select Case(?>Select Case(?<DEPTH>)|End Select(?<-DEPTH>)|.?)*?(?(DEPTH)(?!))End Select
Select Case / End Selectsのバランスの取れたグループを正しく見つけるのはどれですか?しかし、(?
ここにいくつかのサンプルデータがあります:
Select Case
Case :
Select Case
Case : Something
End Select
Case Else : SomethingElse
End Select
この場合、OutterにはCase Elseがあるため、内側のSelectCaseと一致する必要があります。
Select Case
Case :
Select Case
Case : Something
Case Else : SomethingElse
End Select
End Select
内側にはElseがありますが、外側にはないため、ブロック全体と一致する必要があります。
Select Case
Case :
Select Case
Case : Something
Case Else : SomethingElse
End Select
Case Else : SomethingElseOutter
End Select
内側と外側の両方の選択にCaseElseがあるため、一致しないはずです