有關(guān)Python開發(fā)工具進行學(xué)習(xí)研究
Python免費開源,可移植到多種操作系統(tǒng),只要避免使用依賴于特定操作系統(tǒng)的特性,Python程序無需修改就可以在各種平臺上面運行,下面對Python開發(fā)工具進行學(xué)習(xí)研究。
如果要精確地查找to這個單詞的話,我們應(yīng)該使用\bto\b。這里,\b是正則表達式規(guī)定的一個特殊代碼或稱為元字符,它代表單詞的開頭或結(jié)尾,也就是單詞的分界處。盡管英文的單詞通常是由空格、標點符號或者換行來分隔的,但是\b并不匹配這些單詞分隔字符中的任何一個,它只匹配一個位置。
再次重申,元字符\b所匹配的不是字符,而是位置:其前、后字符不全為(一個是,一個不是或不存在)\w的位置。這里的\w也是一個元字符,后面會講到。通過上面的例子,相信讀者對正則表達式已經(jīng)有了一個感性的認識,下面我們開始詳細介紹有關(guān)元字符方面的內(nèi)容。
大多數(shù)字母和字符一般都會和自身匹配,或者說匹配它們的字面值,例如,正則表達式to會和字符串“to”精確匹配。此外,還有少數(shù)字符比較特殊,它們和自身并不匹配,而是跟其字面值之外的一些特殊的東西匹配,這些東西可能是字符集、重復(fù)次數(shù)或者位置等。常用的元字符包括:
- 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')
對于這些特殊字符,本文會陸續(xù)加以介紹。不過我們這里先了解一下用來匹配字符的元字符。首先,句點“.”這個元字符通常用于想匹配“任何字符”的地方:一般情況下,它匹配除換行字符之外的任何字符;但是在alternate模式(re.DOTALL)下,它匹配真正意義上的任何字符,包括換行字符在內(nèi)。
我們接下來考察的元字符是“[”和“]”。它們常配對用來指定想匹配的一個字符集合,也就是說該集合內(nèi)的任何一個元素都能滿足我們的要求。集合內(nèi)的字符可以單個列出,如果這些字符是連續(xù)的也可以用“-”號分隔的兩個給定字符來指定一個字符范圍。
例如,[abc]將匹配“a”、“b”或“c”中的任意一個字符;當然也可以用區(qū)間[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”或“.”中的任意一個;前面說過“.”通常用作元字符,但在字符集合里,其特殊性將被剝奪,恢復(fù)成普通字符。這一點讀者可以自己改動一下上面的代碼來實驗一下。
Python開發(fā)工具需要查找不屬于某個字符集合的字符。比如想查找除了數(shù)字6以外,其它任意字符都行的情況,這時需要用到反義:其做法是把元字符“^”作為集合的***字符,例如,[^5] 將匹配除“6”之外的任意字符。
【編輯推薦】