我有一種情況,可以避免將用戶提供的字符串注入PowerShell代碼。雖然我確實有正確的轉義代碼(複製每個引用,並且單引號字符串的powershell接受5個不同的引號字符,包括智能引號,但現在讓我們假設它接受' 我想要做的是有一個正則表達式我是否該字符串是正確轉義,和逃避被如下加引號這樣的字符串進行與DOTNET REGEX匹配正確轉義引號
hello ' there
是壞的,而
hello '' there
安全
然而3引號(或5 Ø因爲r 7等)也差這麼
hello ''' there
也是危險
所以我試圖找到一個正則表達式可以驗證該字符串是正確轉義,在不存在奇數單引號圖案。
我知道與標準的正則表達式計數組,這是不可能的,但與dotnet捕獲組,我希望做這樣的事情。
('\b(?<DEPTH>)|\b'(?<-DEPTH>)|[^']*)*(?(DEPTH)(?!))
但我不能得到它的工作。
這個正則表達式既艱鉅又美觀。它的工作原理! – klumsy
這裏是壓縮版本 ^(?(D)(?<-D>')|(?:(?')| [^']))+(?(D)($!)| [^'] * )$ –
klumsy