Csharp/C#教程:在C#中匹配西里尔符号分享


在C#中匹配西里尔符号

我有一个巨大的代码文件,有很多行,如下所示:

Enterprise::TextMessageBox::Show(String::Format(S"Възникнал е проблем:nn{0}", e->Message), S"Грешка"); 

我想要做的是找到代码的每个部分,用我提供的另一个文本的cyrilic符号串。 我的问题是,我似乎无法做出好的表达,所以我可以抓住线条。 另一个问题是有时候这些行只包含一个这样的字符串,但有时候它们在一行中包含2个或更多。

每个这样的字符串都是相似的,它看起来像这样:

 S"some cyrilic symbols" 

我试图用Regex类来制作它,但我似乎无法对字符串做出足够好的模式。

好的,您可以匹配Unicode属性。 尝试这样的事情

 Regex TheRegex = new Regex(@"S""[p{IsCyrillic}p{P}p{N}s]*"""); 

p{IsCyrillic}匹配任何西里尔字符

p{P}是标点符号的unicode类别

p{N}是任何语言中数字的unicode类别

s匹配一个空格

有关unicode类别的更多信息, 请参阅msdn , 此处参见 regular-expressions.info 。

你可以尝试用这三种方式之一打开你的文件,这取决于它是如何保存的,但对我来说规则是string是unicode,所以这些读取将本机字符编码为unicode,然后Regex应该工作。

  /* Open OEM File*/ FileStream f1 = new FileStream(@"....DatasTestOEM.txt",FileMode.Open); StreamReader sw1 = new StreamReader(f1, Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage)); string a = sw1.ReadLine(); Console.WriteLine(a); sw1.Close(); f1.Close(); /* Open Unicode file */ FileStream f2 = new FileStream(@"....DatasTestUNICODE.txt",FileMode.Open); StreamReader sw2 = new StreamReader(f2,Encoding.Unicode); string b = sw2.ReadLine(); Console.WriteLine(b); sw2.Close(); f2.Close(); /* Open ANSI file */ FileStream f3 = new FileStream(@"....DatasTestANSI.txt",FileMode.Open); StreamReader sw3 = new StreamReader(f3,Encoding.Default); string c = sw3.ReadLine(); Console.WriteLine(c); sw3.Close(); f3.Close(); 

您可以循环并使用正则表达式

 Regex reg0 = new Regex(@"Възникнал е проблем", RegexOptions.Compiled | RegexOptions.IgnoreCase); if (reg0.IsMatch(string from file)){...} 

试试这个正则表达式: –

  Match match = Regex.Match(input, @"YourReplacementText", RegexOptions.Multiline | RegexOptions.IgnoreCase); // Here we check the Match instance. if (match.Success) { // Do your stuff } 

输入 – 这是你的cyrilic输入字符串

YourReplacementText – 这是你的cyrilic替换字符串

RegexOptions.Multiline | RegexOptions.IgnoreCase – 表示此正则表达式,忽略大小写并检查多行。

Regexp的简短表示法:

 /Грешка/gim 

Грешка – 将此文本更改为您想要的文本以进行更换/匹配

– 代表忽略

m – 代表多行

g – 代表全局,用于迭代匹配

上述就是C#学习教程:在C#中匹配西里尔符号分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1030248.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐