浅谈C#匹配字符串

开发 后端
本文介绍C#匹配字符串,大多数重要的正则表达式语言运算符都是非转义的单个字符。转义符通知正则表达式分析器反斜杠后面的字符不是运算符。

C#匹配字符串

大多数重要的正则表达式语言运算符都是非转义的单个字符。转义符 \(单个反斜杠)通知正则表达式分析器反斜杠后面的字符不是运算符。例如,分析器将星号 (*) 视为重复限定符,而将后跟星号的反斜杠 (\*) 视为 Unicode 字符 002A。

使用一般表达式要习惯的一点是,查看像这样怪异的字符序列,但这个序列的工作是非常逻辑化的。转义序列\S表示任何不适空白的字符。*称为数量词,其含义是前面的字符可以重复任意次,包括0次。序列\S*表示任何不适空白的字符。因此,上面的模式匹配于以n开头,以ion结尾的任何单个字。下表中列出的字符转义在正则表达式和替换模式中都会被识别。

表1:特定字符或转义序列

https://s8.51cto.com/oss/202207/19/a3b866b715442e6ec88810bbbb99595e08cf3c.jpg

如果要搜索一个元字符,也可以通过带有反斜杠的转义字符来表示。例如,.表示除了换行字符以外的任何字符,而\.表示一个点。

可以把可替换的字符放在方括号中,请求匹配包含这些字符。例如,[1|c]表示字符可以是1或者是c。如果要搜索map或者man,可以使用序列"ma[n|p]"(仅指引号内字符,下面雷同)。在方括号中,也可以制定一个范围,例如"[a-z]"表示所有的小写字母(使用连字号 (-) 允许指定连续字符范围),"[B-F]"表示B到F之间的所有大写字母,"[0-9]"表示一个数字,如果要搜索一个整数(该序列只包含0到9的字符),就可以编写"[0-9]+"(注意,使用+字符表示至少要有这样一个数字,但可以有多个数字,所以9、83和3443等都是匹配的。)
下面看看一般表达式的结果,编写一个实例RegularExpressionsZzy。建立几个一般表达式,显示其结果,让用户了解一下表达式是如何工作的。

该实例的核心是一个方法WriteMatches(),它把MatchCollection中的所有匹配以比较详细的方式显示出来。对于每个匹配,它都会显示该匹配在输入字符串中所在的索引,C#匹配字符串和一个略长的字符串,其中包含输入文本中至多8个外围字符,其中至少有5个字符放在匹配的前面,至多5个字符放在匹配的后面(如果匹配的位置在输入文本的开头或结尾5个字符内,则结果中匹配前后的字符就会少于4个)。换言之,靠近输入文本末尾的匹配应是"and messaging ofd",匹配的前后各有5个字符,但位于输入文本的***一个字上的匹配就应是"g of data",匹配的字后只有一个字符。因为在该字符的后面是字符串的结尾。这个长字符串可以更清楚地表明一般表达式是在什么地方查找到匹配的:

  1. staticvoidWriteMatches(stringtext,MatchCollectionmatches)  
  2. {  
  3. Console.WriteLine("Originaltextwas:\n\n"+text+"\n");  
  4. Console.WriteLine("No.ofmatches:"+matches.Count);  
  5. foreach(MatchnextMatchinmatches)  
  6. {  
  7. intIndex=nextMatch.Index;  
  8. stringresult=nextMatch.ToString();  
  9. intcharsBefore=(Index<5)?Index:5;  
  10. intfromEnd=text.Length-Index-result.Length;  
  11. intcharsAfter=(fromEnd<5)?fromEnd:5;  
  12. intcharsToDisplay=charsBefore+charsAfter+result.Length;  
  13. Console.WriteLine("Index:{0},\tString:{1},\t{2}",Index,result,  
  14. text.Substring(Index-charsBefore,charsToDisplay));  
  15. }  

在这个方法中,处理过程是确定在较长的字符串中有多少个字符可以显示,而无需超限输入文本的开头或结尾。注意在Match对象上使用了另一个属性Value,它包含标识该C#匹配字符串,而且,RegularExpressionsZzy只包含名为Find_po,Find_n等的方法,这些方法根据本文执行某些搜索操作。

【编辑推荐】

  1. C#字符串进行分割
  2. 全面测试C#字符串
  3. C# out和ref传递数组
  4. 浅析C#定义整型数组
  5. C#数据库连接字符串
责任编辑:佚名 来源: MSDN
相关推荐

2009-08-07 14:22:56

C#字符串搜索

2009-08-07 14:34:33

C#模式字符串

2009-08-07 13:50:11

C#字符串

2009-08-26 13:24:54

C#字符串

2009-08-07 14:15:21

C#字符串分割

2009-08-24 13:04:44

操作步骤C#字符串

2009-08-24 17:06:37

C#字符串

2009-08-06 16:01:09

C#字符串函数大全

2009-08-14 17:44:46

C#中使用正则表达式匹

2009-09-02 16:21:20

C#字符串

2009-08-28 10:39:37

C#数值字符串

2009-08-07 15:58:54

C#字符串插入html

2009-08-07 15:49:46

使用C#字符串

2009-08-06 17:24:08

C#字符串

2009-09-02 15:53:27

C#判断字符串应用

2009-08-11 10:26:49

C#算法C#字符串反转

2009-09-04 10:26:09

Java和C#字符串类

2009-08-21 15:06:09

C#连接字符串

2009-08-07 14:02:12

C#数据库连接字符串

2009-09-01 17:58:55

C#截取字符串
点赞
收藏

51CTO技术栈公众号