正则表达式确保使用\ r \ n

时间:2011-08-25 14:02:42

标签: c# regex newline

我正在寻找一个正则表达式,以确保我的字符串只包含\ r \ n for newline而不是\ r或\ n。

示例文本没有错误:
您好,\ r \ n \ r \ n欢迎参加我们全新的邮轮公司。\ r \ nKind问候

包含错误的示例文字:
您好!\ r \ n \ n \ n \ Welcom是我们全新的邮轮公司。\ n问候

提前谢谢!
亲切的问候,丹尼

2 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

(\r[^\n])|([^\r]\n)

如果匹配,则您的文字包含松散的\r\n
注意:如果你把它放在字符串中,你需要转义\ r \ n两次。或者更好地将它放在@字符串中,如@"(\r[^\n])|([^\r]\n)"

编辑:示例:

using System;
using System.Text.RegularExpressions;
public class Test
{
        public static void Main()
        {
                Regex r = new Regex(@"(\r[^\n])|([^\r]\n)");
                string[] Test = { "Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards", 
                                         "Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards" };

                foreach(string t in Test)
                {
                        System.Console.Write("\"{0}\" ", t.Replace("\r", "\\r").Replace("\n", "\\n"));
                        if(r.IsMatch(t))
                                System.Console.WriteLine("Is not ok");
                        else
                                System.Console.WriteLine("Is ok");
                }
        }
}

输出:

"Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards" Is ok
"Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards" Is not ok

链接:http://ideone.com/mauNN

答案 1 :(得分:0)

我修复了我在上一个示例中的错误,这是一个测试工作示例

using System;
using System.Text.RegularExpressions;
public class Test
{
        public static void Main()
        {
        Regex rxSingleCharNewLine = new Regex(@"\r(?!\n)|(?<!\r)\n",RegexOptions.Singleline);
        Regex rxNewLine = new Regex(@"\r\n",RegexOptions.Singleline);
                string[] Test = { "Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards", 
                                         "Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards" };

                foreach(string t in Test)
                {
                        System.Console.Write("\"{0}\" ", t.Replace("\r", "\\r").Replace("\n", "\\n"));
                        if(!rxSingleCharNewLine.IsMatch(t) && rxNewLine.IsMatch(t))
                                System.Console.WriteLine("Is ok");
                        else
                                System.Console.WriteLine("Is not ok");
                }
        }
}

你可以看到它在这里运行 http://ideone.com/RDp0X