Skip to main content
 首页 » 编程设计

c#之为正则表达式禁用全局

2024年02月02日30luoye11

我想关闭全局设置(因为它默认设置为在 .NET 上使用),因为我想要做的只需要更改字符串的第一部分,但是它有可能将在字符串中出现两次,例如我希望

C00000WPF0000SAND

只改变 0 的第一个实例。

if (Regex.IsMatch(text, "^[a-z]+00+", RegexOptions.IgnoreCase)) 
{ 
    text = Regex.Replace(text, "0{1,}", "00*", RegexOptions.IgnoreCase); 
} 

这就是我目前的做法,但是这似乎需要“00+”的每个实例并进行更改,但这会把事情搞砸。

请您参考如下方法:

您需要指定一个匹配限制; Regex.Replace(string, string, RegexOptions) 的文档明确指出它会替换找到的模式的所有实例。 Regex.Replace 没有同时采用匹配限制和正则表达式选项的静态重载,因此您必须构造一个 Regex 对象,然后使用 Replace(string, string, int) 重载。试试这个:

text = new Regex("0{1,}", RegexOptions.IgnoreCase).Replace(text, "00*", 1);