首頁 > 後端開發 > C++ > 為什麼內聯正規表示式分隔符號在 C# Regex.Replace() 中不起作用?

為什麼內聯正規表示式分隔符號在 C# Regex.Replace() 中不起作用?

Linda Hamilton
發布: 2025-01-22 04:31:09
原創
441 人瀏覽過

Why Doesn't Inline Regex Delimiter Work in C# Regex.Replace()?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板