C# 正規表示式:避免內嵌分隔符號
問題:
在 C# 中使用正規表示式時的常見陷阱是內聯分隔符號的錯誤應用。 嘗試字串替換時,這通常會導致意外行為。例如,設計用於刪除“/”、“-”和“.”的正規表示式。來自字串可能會失敗。
範例:
以下程式碼嘗試取代「/」、「-」和「.」帶有空字串,但它無法正常運作:
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; name = Regex.Replace(name, @"/\W/g", ""); // Incorrect usage of delimiters</code>
解:
C# 與 PHP、Perl 或 JavaScript 等語言的不同之處在於其正規表示式語法。 不支援內嵌分隔符號(如上例中的 /
)。正確的做法是省略它們:
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; name = Regex.Replace(name, @"\W", ""); // Correct syntax</code>
要專門針對“/”、“-”和“.”,請使用字元類別:
<code class="language-csharp">name = Regex.Replace(name, @"[/\-\.]", ""); // Correctly targets specific characters</code>
說明:
正規表示式字串之前的 @
符號表示逐字字串文字,防止 C# 專門解釋反斜線。 W
匹配任何非字母數字字符,有效刪除“/”、“-”、“.”和其他類似符號。 改進的範例使用字元類別 [/-.]
明確定義要刪除的字元。 g
標誌(全域替換)由 C# 中的 Regex.Replace
隱式處理。 因此,C# Regex.Replace
方法中不需要分隔符號或全域標誌。
以上是為什麼內聯正規表示式分隔符號在 C# Regex.Replace() 中不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!