2014-05-14 4 views
6

से सभी regex वर्णों से कैसे बचें, मुझे आश्चर्य है कि क्या Powerhell में regex वर्णों से बचने के लिए एक बेहतर विकल्प है, मुझे पता है कि सी # में Regex.Escape है, लेकिन मुझे यकीन नहीं है कि शक्तियों के पास यह स्वयं की विधि है ...शक्तियां: स्ट्रिंग

यह है कि मैं क्या पल में कर रहा हूँ है:

$escapedStr = $regexStr -replace "\+","\+" -replace "\[","\[" -replace "\]","\]" -replace "\(","\(" -replace "\)","\)" 

उत्तर

14

PowerShell ठीक उसी विधि कॉल कर सकते हैं:

[Regex]::Escape($regexStr) 

लेकिन आप भी का उपयोग करके अपने प्रतिस्थापन सुधार सकता है सिर्फ एक si ngle regex की जगह:

$regexStr -replace '[[+*?()\\.]','\$&' 

हालांकि, मैं शायद अभी भी उस चरित्र वर्ग से कुछ अक्षरों से परे याद किया, तो बस [regex]::Escape विधि का उपयोग करें।

+0

मेरे उद्देश्यों के लिए मैं आम तौर पर आपका दूसरा सुझाव पसंद करता हूं ('-replace' का उपयोग करके) क्योंकि यह व्हाइटस्पेस से बच नहीं जाता है। हालांकि, आपको एक फिक्स की आवश्यकता है। अंतिम तर्क '\ $ $' के बजाय '\ $ $' '' और $ 'होना चाहिए। यह PowerShell है, सी # :-) नहीं। –

संबंधित मुद्दे