?|\"-]+*"; -6ren">
gpt4 book ai didi

c# - RegEx -- 没有错误的量词 {x,y}

转载 作者:太空狗 更新时间:2023-10-29 21:30:56 25 4
gpt4 key购买 nike

我是 RegEx 的新手 -- 所以有人可以帮我弄清楚这里到底出了什么问题吗?

我有这个代码:

       string regPattern = "*[~#%&*{}/<>?|\"-]+*";
string replacement = "";
Regex regExPattern = new Regex(regPattern);

然而,当我的应用遇到 regExPattern 行时,我得到一个 ArgumentException -- Quantifier {x,y} 没有任何错误。

有人可以帮忙吗?

编辑:我需要像这样将此模式传递到 foreach 循环中:

    if (paths.Contains(regPattern))
{
foreach (string files2 in paths)
{
try
{
string filenameOnly = Path.GetFileName(files2);
string pathOnly = Path.GetDirectoryName(files2);
string sanitizedFileName = regExPattern.Replace(filenameOnly, replacement);
string sanitized = Path.Combine(pathOnly, sanitizedFileName);
//write to streamwriter
System.IO.File.Move(files2, sanitized);

}
catch (Exception ex)
{
//write to streamwriter

}
}
}
else
{
//write to streamwriter

}

如果将模式传递到此循环中,我该如何定义模式?

最佳答案

更新:在阅读了对问题的评论后,我认为您只想这样:

s = Regex.Replace(s, "[~#%&*{}/<>?|\"-]+", "");

旧答案:我猜当您编写 * 时,您想到的是通配符,例如您将在 shell 中输入的通配符:

*.txt

这不是 * 在正则表达式语法中的工作方式。您可能想要的是 .*:

".*[~#%&*{}/<>?|\"-]+.*"

. 表示“任何字符”,* 表示“前面的零个或多个”。

在字符类 [...] 中,* 失去了它的特殊含义,变成了一个文字字符,所以不需要转义。在字符类中不必要地转义它不会造成任何伤害,有些人发现它更容易阅读。

关于c# - RegEx -- 没有错误的量词 {x,y},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3135581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com