Python免费开源,可移植到多种操作系统,只要避免使用依赖于特定操作系统的特性,Python程序无需修改就可以在各种平台上面运行,下面对Python开发工具进行学习研究。
如果要精确地查找to这个单词的话,我们应该使用\bto\b。这里,\b是正则表达式规定的一个特殊代码或称为元字符,它代表单词的开头或结尾,也就是单词的分界处。尽管英文的单词通常是由空格、标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
再次重申,元字符\b所匹配的不是字符,而是位置:其前、后字符不全为(一个是,一个不是或不存在)\w的位置。这里的\w也是一个元字符,后面会讲到。通过上面的例子,相信读者对正则表达式已经有了一个感性的认识,下面我们开始详细介绍有关元字符方面的内容。
大多数字母和字符一般都会和自身匹配,或者说匹配它们的字面值,例如,正则表达式to会和字符串“to”精确匹配。此外,还有少数字符比较特殊,它们和自身并不匹配,而是跟其字面值之外的一些特殊的东西匹配,这些东西可能是字符集、重复次数或者位置等。常用的元字符包括:
- class Category(models.Model):
- id = models.AutoField('id', primary_key=True)
- name = models.CharField(maxlength=50)
- code = models.CharField(maxlength=50)
- parentCategory = models.ForeignKey('self', 'id', null=True)
- enable = models.BooleanField()
- def __str__(self):
- return self.name
- class Admin:
- list_display = ('id', 'name', 'code', 'parentCategory')
对于这些特殊字符,本文会陆续加以介绍。不过我们这里先了解一下用来匹配字符的元字符。首先,句点“.”这个元字符通常用于想匹配“任何字符”的地方:一般情况下,它匹配除换行字符之外的任何字符;但是在alternate模式(re.DOTALL)下,它匹配真正意义上的任何字符,包括换行字符在内。
我们接下来考察的元字符是“[”和“]”。它们常配对用来指定想匹配的一个字符集合,也就是说该集合内的任何一个元素都能满足我们的要求。集合内的字符可以单个列出,如果这些字符是连续的也可以用“-”号分隔的两个给定字符来指定一个字符范围。
例如,[abc]将匹配“a”、“b”或“c”中的任意一个字符;当然也可以用区间[a-c]来表示同一字符集,这两者表示方法是等效的。如果想匹配字符串中的所有元音字母,则可使用下列代码:
- class Category(models.Model):
- id = models.AutoField('id', primary_key=True)
- name = models.CharField(maxlength=50)
- code = models.CharField(maxlength=50)
- parentCategory = models.ForeignKey('self', 'id', null=True)
- enable = models.BooleanField()
- def __str__(self):
- return self.name
- class Admin:
- list_display = ('id', 'name', 'code', 'parentCategory')
对于字符集合有一点需要特别注意,就是元字符在方括号中会“降级”为普通字符。例如,[a.]将匹配字符“a”或“.”中的任意一个;前面说过“.”通常用作元字符,但在字符集合里,其特殊性将被剥夺,恢复成普通字符。这一点读者可以自己改动一下上面的代码来实验一下。
Python开发工具需要查找不属于某个字符集合的字符。比如想查找除了数字6以外,其它任意字符都行的情况,这时需要用到反义:其做法是把元字符“^”作为集合的***字符,例如,[^5] 将匹配除“6”之外的任意字符。
【编辑推荐】