今天我们来学习一下正则表达式,我想大家对正则表达式可能并不是很熟悉吧,那么今天就由我来教大家正则表达式。首先我向大家介绍一个.Net下的工具Regex Tester,我们可以在这个软件里面写我们需要的正则表达式。安装完成后,我们先来初步了解一下正则表达式。大家可能不知道正则表达式到底是什么?我就告诉大家,正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码;正则表达式是用于进行文本匹配的工具,所以本文里多次提到了在字符串里搜索/查找,这种说法的意思是在给定的字符串中,寻找与给定的正则表达式相匹配的部分。
当然学习正则表达式,不是一天两天就能学会的,正则表达式学习起来,确实很难,但我们后继学习开发软件的时候,会用到正则表达式,所以学习正则表达式对我们每个人都有好处。正则表达式不同的开发技术,会用到不同的元字符。那么正则表达式有哪些不同的开发技术呢?如下图:
除了上面这些,正则表达式还有其它的不同开发技术。上面说到我们要用元字符来写正则表达式,那我们常用的元字符有哪些呢?.:匹配除换行符以外的任意字符;\w:匹配字母或数字或下划线或汉字;\s:匹配任意的空白符;\d:匹配数字;\b:匹配单词的开始或结束;^:匹配字符串的开始;KaTeX parse error: Expected 'EOF', got '\来' at position 109: …成其它的意思。这时你就必须使用\̲来̲取消这些字符的特殊意义。因此,…那样用于指定一个位置,这个位置应该满足一定的条件(断言),因此它们也被称为零宽断言。(?=exp):匹配exp前面的位置;(?<=exp):匹配exp后面的位置;(?!exp):匹配后面跟的不是exp的位置;(?<!exp):匹配前面不是exp的位置。
注释:(?#comment):这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读。
贪婪与懒惰:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配;我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复就叫懒惰匹配。懒惰匹配符:*?:重复任意次,但尽可能少重复;+?:重复1次或更多次,但尽可能少重复;??:重复0次或1次,但尽可能少重复;{n,m}?:重复n到m次,但尽可能少重复;{n,}?:重复n次以上,但尽可能少重复。
我讲到贪婪与懒惰,下面的内容就不讲了,希望大家可以上网搜索更多关于正则表达式的方法。接下来,我们学习一下刚才下载的软件,左边是我们选择要学习的开发技术,Match是查询,Split是替换功能。
学习总结:通过这次学习正则表达式,我学会了原来正则表达式并不简单,如果有人说学习正则表达式很简单的话,那你肯定是一个不简单的人。我知道学习正则表达式是一件很幸苦的事情,但为了我们以后的开发,这是我们每个学IT必需要掌握的一门技术,所以我希望大家能一起去学习正则表达式。