ユーザーが提供した文字列を PowerShell コードに挿入することを回避できる状況があります。私はそれを正しくエスケープするコードを持っていますが(各引用符を複製し、一重引用符で囲まれた文字列を持つpowershellはスマート引用符を含む5つの異なる引用文字を受け入れます。文字列が適切にエスケープされているかどうか。エスケープは引用符を二重にすることで行われるため、次のような文字列になります。
hello ' there
間は悪いです
hello '' there
安全です
ただし、引用符 3 つ (または 5 つまたは 7 つなど) も悪いので、
hello ''' there
も危険です
そのため、奇数の単一引用符パターンがないという点で、文字列が適切にエスケープされていることを検証できる正規表現を見つけようとしています。
このような標準の正規表現カウント グループでは不可能であることはわかっていますが、dotnet キャプチャ グループでは、このようなことをしたいと考えていました。
('\b(?<DEPTH>)|\b'(?<-DEPTH>)|[^']*)*(?(DEPTH)(?!))
しかし、私はそれを機能させることができません。