如何处理正则表达式中的新行

时间:2015-03-05 14:52:13

标签: c# regex

我有一个应用程序,它从用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;

2 个答案:

答案 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'});

这通常是推荐的(因为几乎所有东西都比正则表达式更好:))。

然后你会把它提供给你建立的正则表达式。