首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板