yea*_*mok 6 c# regex argumentexception
我对RegEx很新 - 所以有人可以帮我弄清楚到底出了什么问题吗?
我有这个代码:
string regPattern = "*[~#%&*{}/<>?|\"-]+*";
string replacement = "";
Regex regExPattern = new Regex(regPattern);
Run Code Online (Sandbox Code Playgroud)
然而,当我的应用程序遇到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
}
Run Code Online (Sandbox Code Playgroud)
如果将模式传递到此循环中,如何定义模式?
更新:在阅读问题评论后,我认为您只需要这样:
s = Regex.Replace(s, "[~#%&*{}/<>?|\"-]+", "");
Run Code Online (Sandbox Code Playgroud)
旧答案:我猜你写的时候*想到的是通配符,比如那些你要在shell中输入的通配符:
*.文本
这不是*正则表达式语法的工作原理.你可能想要的是.*:
".*[~#%&*{}/<>?|\"-]+.*"
Run Code Online (Sandbox Code Playgroud)
的.意思是"任何字符",而*表示"零个或多个前面的".
在字符类中[...],*它失去了它的特殊含义并成为一个文字字符,所以它不需要被转义.在角色类中不必要地逃避它不会造成任何伤害,有些人会发现它更容易阅读.
| 归档时间: |
|
| 查看次数: |
13161 次 |
| 最近记录: |