正则-简单的模式

Posted 道高一尺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则-简单的模式相关的知识,希望对你有一定的参考价值。

我们将从最简单的正则表达式开始,由于正则表达式常用于操作字符串的,因此我们从最常见的任务下手:字符匹配

字符匹配

大多数字母和字符会匹配它们自身。

举个例子:正则表达式FishC将完全匹配字符串‘FishC’。

(你可以启用不区分大小写模式,则正则表达式FishC可以匹配‘FISHC’,或‘fishc’)

当然这个规则也有例外。

有少数特殊的字符我们称之为‘元字符’(metacharacter),它们并不能匹配自身,它们定义了字符类,子组匹配和模式重复次数等。

本文用很大的篇幅讨论了各种元字符及其作用。

下面是元字符的完整列表

. ^ $* + ? {} \\ | ()

注释:如果没有这些元字符,正则表达式就会变得跟字符串的find()方法一样平庸了。

1、方括号

我们先来看一下方括号[],它们指定一个字符类用于存放你需要匹配的字符集合。

可以单独列出需要匹配的字符,也可以通过两个字符和一个横杆指定匹配的范围。

例如:[abc]会匹配字符a,或b,或c;[a-c]可以实现相同功能。后者使用范围来表示与前者相同的字符集合。

如果你想只匹配小写字母,你的RE可以写成[a-z]。

 

需要注意的一点是:元字符在括号中不会触发‘特殊功能’,在字符类中,它们只匹配本身。

例如:[akm$]会匹配\'a\',\'k\',\'m\',或\'$\',$是一个元字符,但是在方括号中它不代表特殊含义,它只匹配$字符本身。

2 、^

你还可以匹配方括号中位列出的其他所有字符。做法是在类的开头添加一个脱字字符^,

例如:[^5]会匹配除了‘5’之外的任何字符。

3、反斜杠

或许最终要的元字符当属反斜杠了‘\\’,跟python的字符串规则一样,如果在反斜杠后面紧跟着一个元字符,那么元字符的‘特殊功能’也不会触发。

例如:你需要匹配[ 或 \\ , 你可以在前加反斜杠以消除他们的特殊功能: \\[ , \\\\。

反斜杠后面跟一些字符还可以表示特殊的意义,例如表示十进制的数字,表示所有的字母或者表示所有的非空白的字符集合。

注释:反斜杠很牛逼,后面加元字符则去除其特殊功能,后面加普通字符则实现特殊功能。

例如:\\w 匹配任何单词字符。

如果正则表达式以字节的形式表示,这相当于[a-zA-Z0-9]

如果正则表达式表示的是一个字符串,\\w 会匹配所有的unicode数据库

你可以在编译正则表达式的时候,通过提供re.ASCII表示进一步限制 \\w 的定义。

注释:re.ASCII标志使得\\w 只能匹配ASCII字符,不要忘了python是unicode的。

它们可以包含在一个字符类中,并且一样拥有特殊含义。

例如:[\\s,.]是一个字符类,它将匹配任何空白字符,\',\'或\'.\'

4、\' . \'

最后我们讲的一个元字符是 \'.\' ,它匹配除了换行符以外的任何字符。

如果设置了re.DOTALL标志,.将匹配包括换行符在内的任何字符。

以上是关于正则-简单的模式的主要内容,如果未能解决你的问题,请参考以下文章

Java 正则简单用法

Go 语言入门很简单:正则表达式

js正则表达式常用函数方法及简单应用

java---正则表达式的字符串简单实用及扩展链接

正则表达式的几个简单验证

近万字正则入门方法学习正则表达式的简单方法,建议收藏!