我有一个应用程序,它从用C#编写的文本文件中读取代码。
每次代码通常都遵循相同的模式
示例:
QUES10100
根据我到目前为止所写的内容,这会导致正则表达式如下所示:
string expr = "^[A-Z]{4}[0-9]{5}$";
然后问题是当从文本文件中读取代码时(每个新行一个),代码会附加\r
个新行字符。这是通过设置断点来查看实际传递的内容。
我在上面提供的表达中缺少什么?
此外,如果我单独添加代码,/ r字符不会被附加,所以它很好,在这种情况下我需要一个或操作数在那里。
摘要
到目前为止:^[A-Z]{4}[0-9]{5}$
我需要的是:^[A-Z]{4}[0-9]{5}$
或 ^[A-Z]{4}[0-9]{5}$
占用/ r个字符。
谢谢,任何澄清,请让我知道我的经验 REGEX非常有限。
更新
string expr = "^[A-Z]{4}[0-9]{5}";
Regex regex = new Regex(expr , RegexOptions.IgnoreCase);
Match match = regex.Match( code );
if (!match.Success) //Pattern must match
{
MessageBox.Show("Code does not match the necessary pattern");
return false;
}
return true;
答案 0 :(得分:2)
为什么要使用正则表达式?使用File.ReadLines
并使用正则表达式进行验证。
foreach(string line in File.ReadLines(@"c:\file path here")) {
if (Regex.Test(expr, line)) {
Console.WriteLine(line);
}
}
答案 1 :(得分:1)
如果您无法控制正在读取字符串的方式,您还可以查看String.Trim(char\[\] values)
方法,该方法可以让您事先清理字符串:
如下所示:
string str = "....".Trim(new char[] {'\r', '\n'});
这通常是推荐的(因为几乎所有东西都比正则表达式更好:))。
然后你会把它提供给你建立的正则表达式。