争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

C#中的正则表达式(1)

时间:2024/7/12作者:未知来源:争怎路由网人气:

Data): "

哪一个是我们想要的?

很明显,表达式1的结果不是我们想要的结果,它匹配的将是:From或者Subjec或者Data: ,表达式2使用圆括符,就能满足我们的需要。



单词边界

我们已经可以匹配出现在行首和行尾的字符,那么如果我们想定位的不仅仅是行首或者行尾呢?我们需要引入单词边界符号,单词边界符号是:"\b",斜杠不可省略,否则变成匹配字母b。使用单词边界符号,我们可以定位匹配的位置必须出现在一个单词的开始或者结尾部分,而不是在单词的中间。例如:"\bis\b"表达式在字符串"This is a cat."中将匹配单词"is"而不会匹配单词"This"中的"is"。



字符串边界符号

除了上述的位置符号,如果我们要匹配的是整个字符串(含多个单词)那么我们可以使用下面的两个符号:

\A :表示字符串的开始处;

\z :表示字符串的结束处。

表达式:"\AThis is a cat\z"将匹配这个字符串"This is a cat"。

使用边界定位符号,这里要提到一个重要的概念,那就是单词字符,单词字符表示可以构成单词的字符,它们是[a-zA-Z0-9]中的任意一个字符。所以上面的表达式也会在句子"This is a cat."得到匹配。匹配的结果不包含句号。





重复数量符号

让我们看表达式:"Colou?r", 这个表达式中出现了我们还没有见过的问号,(这个问号和文件名称匹配的问号意义不同),它表示符号前面的一个字符可以被重复的次数,"?"表示0次或者1次,前面的表达式中问号表示u可以出现0或1次,所以它将匹配"Color"或者"Colour"。

下面是其他的重复数量符号:

+ :表示1次或者多次

* :表示0次或者多次

例如我们要表示一或多个空格,我们可以写表达式:" +";



如果要表示具体次数呢?我们引入花括符{}。

{n} : n是具体的数字,表示重复n次。

{n,m}: 表示最少那次,最多m次。



这些符号都限定了符号前面一个字符的匹配次数。但是如果你想重复多个字符,比如一个单词,那么怎么办?我们再次使用圆括号,前面我们把圆括号作为选项的范围符号,这里是圆括的另外一种使用方法,它被表示为一个组,例如表达式:“(this)"这里的this就是一个组,那么问题就好办了,重复数量符号可以用来表示它前面一个组的重复次数。



现在回到查找重复单词的问题,假如我们要找到“the the”,根据我们迄今为止学到的知识,我们可以写出表达式:

"\bthe +the\b"

表达式的意思是匹配两个the中间有一个或多个空格隔开。

同样,我们还可以写成:

"\b(the +){2}"



但是如果要找全部可能的重复单词呢?我们目前的知识还不足以解决这个问题,下面我们引进反向引用的概念,我们已经看到圆括号可以作为组的边界,一个表达式中可以有多个被圆括号限定的组,根据它们出现的次序,这些组缺省的被分配了一个组号,第一个出现的组号为1号,依次类推。那么反向引用就是可以在之后的表达式的位置上是使用"\n"来引用这个组,这里n是被引用的组号。反向引用就像是程序中的变量一样,下面我们看具体的例子:

前面的单词重复表达式,现在我们采用反向引用可以写做:

"\b(the) +\1\b"

现在,如果我们要匹配所有的重复单词,我们就可以改写表达式为:
"\b([a-zA-Z]+) +\1\b"



最后一个问题是,如果我们要匹配的字符是正则表达式中的符号,怎么办?对,使用转义符号"\", 例如如果你要匹配一个小数点,那么你可以:"\.",还要注意的是如果在程序中使用表达式那么"\"也要按照字符串的规定变成"\\"或者在表达式前面加@。



本章仅仅是提供给菜鸟一个关于正则表达式的基础知识,它只是其中的部分,我们还有许多东西要学习,这将在后面的章节中一一介绍。其实,正则表达式的学习并不难,你需要的是耐心和实践,如果你想精通它的话。或许有人说:“我不想知道汽车的细节,我只想学会怎么开车。”如果你也是这样想的,那么,你永远也不知道怎么使用正则表达式来解决你的问题,进而,你也永远不会懂得正则表达式的真正的强大。

关键词:C#中的正则表达式(1)




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版