在C#中匹配西里尔符号:nn{0}",e->Message),S"Грешка");我想要做的是找到代码的每个部分,以及我提供的另一个文本的西里尔符号字符串。我的问题是我似乎不能很好地表达,所以我可以抓住台词。另一个问题是有时这些行只包含一个这样的字符串,但有时它们在一行中包含2个或更多个。每个这样的字符串都是相似的,它看起来像这样:S"somecyrilicsymbols"我正在尝试使用Regex类来创建它,但我似乎无法为字符串创建足够好的模式。好的,您可以匹配Unicode属性。试试这样的正则表达式TheRegex=newRegex(@"S""[p{IsCyrillic}p{P}p{N}s]*""");p{IsCyrillic}匹配任何西里尔字符p{P}是标点符号的unicode类别p{N}是任何语言中数字的unicode类别s匹配空格有关unicode类别的更多信息,请参阅regular-expressions.info这里。您可以尝试以这三种方式之一打开您的文件,具体取决于文件的保存方式,但对我来说,规则是字符串是unicode,因此这些将本机字符读入unicode,然后Regex应该可以工作。/*打开OEM文件*/FileStreamf1=newFileStream(@"...DatasTestOEM.txt",FileMode.Open);StreamReadersw1=newStreamReader(f1,Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage));字符串a=sw1.ReadLine();控制台.WriteLine(a);sw1.关闭();f1.关闭();/*打开Unicode文件*/FileStreamf2=newFileStream(@"...DatasTestUNICODE.txt",FileMode.Open);StreamReadersw2=newStreamReader(f2,Encoding.Unicode);字符串b=sw2.ReadLine();控制台.WriteLine(b);sw2.关闭();f2.关闭();/*打开ANSI文件*/FileStreamf3=newFileStream(@"...DatasTestANSI.txt",FileMode.Open);StreamReadersw3=newStreamReader(f3,Encoding.Default);字符串c=sw3.ReadLine();控制台.WriteLine(c);sw3.关闭();f3.关闭();您可以循环并使用正则表达式Regexreg0=newRegex(@"Възникналепроблем",RegexOptions.Compiled|RegexOptions.IgnoreCase);if(reg0.IsMatch(stringfromfile)){...}测试这个规则表达式:–Matchmatch=Regex.Match(input,@"YourReplacementText",RegexOptions.Multiline|RegexOptions.IgnoreCase);//这里我们检查Match实例。if(match.Success){//做你的事}输入——这是你的西里尔输入字符串YourReplacementText——这是你的西里尔替换字符串RegexOptions.Multiline|RegexOptions.IgnoreCase-此正则表达式的缩写,忽略大小写并检查多行g–代表global,用于迭代匹配以上是C#学习教程:C#中匹配西里尔符号的所有内容分享,如果对大家有用,还需要了解更多关于C#学习教程,希望大家点赞多多关注,本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处:
