我正在寻找一个正则表达式,以确保我的字符串只包含\ r \ n for newline而不是\ r或\ n。
示例文本没有错误:
您好,\ r \ n \ r \ n欢迎参加我们全新的邮轮公司。\ r \ nKind问候
包含错误的示例文字:
您好!\ r \ n \ n \ n \ Welcom是我们全新的邮轮公司。\ n问候
提前谢谢!
亲切的问候,丹尼
答案 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
答案 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