【发布时间】:2019-10-05 03:55:08
【问题描述】:
我正在使用 C# 编写一个 WPF 程序,该程序允许手动输入目录路径。我的用户不是有经验的计算机用户,可能会输入文件路径而不是目录路径。
我创建了一个正则表达式,它可以在 RegExr 网站上完全按照我的意愿工作,但在我的 C# 代码中失败了。只要文件扩展名出现在用户输入的路径的末尾,它就会触发。表达式如下:
\x2e[^\x5c]*$
我试过用这个
using System;
using System.Text.RegularExpressions;
using System.Windows;
public partial class MainWindow : Window
{
private void ConvertFile(object sender, RoutedEventArgs e)
{
Regex rx = new Regex("\u002E[^\x5C]*$");
}
}
我希望该功能按预期工作,但我收到以下错误:
System.ArgumentException: 'parsing ".[^]*$" - Unterminated [] set.'
据我所知,这组括号似乎已终止,我看不出有什么问题,但它仍然不起作用。我尝试添加和删除额外的反斜杠,使用 Unicode . 和 \,常规 . 和 \,前面带有转义字符,将字符串分成多个部分,并将 [] 替换为 @ 987654327@。似乎没有任何效果,我不断收到同样的错误。
【问题讨论】:
-
要么转义反斜杠,例如"\\u002E[^\x5C]*$" 或使用文字运算符@,例如@"\u002E[^\x5C]*$"
-
@RamblinRose:他需要转义两个反斜杠,而不仅仅是第一个反斜杠。
-
@BenVoigt 确实,好眼睛。
标签: c# regex directory filepath