成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

由淺到深解讀Python正則表達式

開發 后端
下文為一些不熟悉Python正則表達式的程序員和讀者提供了元字符方面的有關知識,更多正則表達式方面的知識,將陸續推出。

對于許多需要處理文本來說的技術工程師,必須對Python正則表達式有一個全面深入的認識,不但要深入理解下什么是Python正則表達式,還要對Python正則表達式字符有所認識。

此外,還有少數字符比較特殊,它們和自身并不匹配,而是跟其字面值之外的一些特殊的東西匹配,這些東西可能是字符集、重復次數或者位置等。常用的元字符包括:
. ^ $ * + ? { } [ ] \ | ( )

對于這些特殊字符,本文會陸續加以介紹。不過我們這里先了解一下用來匹配字符的元字符。首先,句點“.”這個元字符通常用于想匹配“任何字符”的地方:一般情況下,它匹配除換行字符之外的任何字符;但是在alternate模式(re.DOTALL)下,它匹配真正意義上的任何字符,包括換行字符在內。

我們接下來考察的元字符是“[”和“]”。它們常配對用來指定想匹配的一個字符集合,也就是說該集合內的任何一個元素都能滿足我們的要求。集合內的字符可以單個列出,如果這些字符是連續的也可以用“-”號分隔的兩個給定字符來指定一個字符范圍。

例如,[abc]將匹配“a”、“b”或“c”中的任意一個字符;當然也可以用區間[a-c]來表示同一字符集,這兩者表示方法是等效的。如果想匹配字符串中的所有元音字母,則可使用下列代碼:

  1. import re  
  2. def re_show(pat, s):  
  3.     print re.compile(pat, re.M).sub("{\g<0>}", s.rstrip()),'\n'  
  4.  
  5. s = '''In company or association with respect to place or time;  
  6.         as, to live together in one house; to live together in the  
  7.         same age; they walked together to the town.'''  
  8. re_show(r"[aeiou]",s) 

運行結果如下所示:

  1. In c{o}mp{a}ny {o}r {a}ss{o}c{i}{a}t{i}{o}n w{i}th r{e}sp{e}ct t{o} pl{a}c{e} {o}r t{i}m{e};  
  2.  
  3.   {a}s, t{o} l{i}v{e} t{o}g{e}th{e}r {i}n {o}n{e} h{o}{u}s{e}; t{o} l{i}v{e} t{o}g{e}th{e}r {i}n th{e}  
  4.  
  5.   s{a}m{e} {a}g{e}; th{e}y w{a}lk{e}d t{o}g{e}th{e}r t{o} th{e} t{o}wn. 

對于字符集合有一點需要特別注意,就是元字符在方括號中會“降級”為普通字符。例如,[a.]將匹配字符“a”或“.”中的任意一個;前面說過“.”通常用作元字符。但在字符集合里,其特殊性將被剝奪,恢復成普通字符。這一點讀者可以自己改動一下上面的代碼來實驗一下。

有時需要查找不屬于某個字符集合的字符。比如想查找除了數字6以外,其它任意字符都行的情況,這時需要用到反義:其做法是把元字符“^”作為集合的***字符,例如,[^5] 將匹配除“6”之外的任意字符。

反斜杠“\”是一種非常重要的元字符。我們知道在Python的字符串中,反斜杠也是作為一種特殊字符(或轉義字符)使用,后面可以跟不同的字符以表示不同特殊意義;它也可以用于取消所有的元字符,這樣你就可以在模式中匹配它們了。舉個例子,如果你需要匹配字符“\”,你可以在其之前用反斜杠來取消它們的特殊意義:\\。#t#

◆\d 匹配任何十進制數;它等價于字符集合[0-9]。
◆\D 匹配任何非數字字符;它等價于字符集合[^0-9]。
◆\s 匹配任何空白字符;它等價于字符集合[ \t\n\r\f\v]。
◆\S 匹配任何非空白字符;它等價于字符集合[^ \t\n\r\f\v]。
◆\w 匹配任何字母數字下劃線字符;它等價于字符集合[a-zA-Z0-9_]。
◆\W 匹配任何非字母數字下劃線字符;它等價于字符集合[^a-zA-Z0-9_]。

我們已經講過為單個字符指定重復次數的方法——直接在字符后面加上限定符就行了;現在我們再來學習一下重復多個字符的八法:你可以用小括號來指定子表達式(也叫做分組),然后你就可以指定這個子表達式的重復次數了,你也可以對子表達式進行其它一些操作。

我們知道,IP地址是由點號分隔的四個數字,并且每個數字都不能大于255。(\d{1,3}\.){3}\d{1,3}是一個簡單的IP地址匹配表達式,其中:\d{1,3}匹配1到3位的數字,(\d{1,3}\.){3}匹配三位數字加上一個英文句號(這個整體也就是這個分組)重復3次,***再加上一個一到三位的數字(\d{1,3})。

然而,它也將匹配256.300.888.999這種不可能存在的IP地址。如果能使用算術比較的話,或許能簡單地解決這個問題,但是正則表達式中并不提供關于數學的任何功能,所以只能使用冗長的分組。

選擇Python正則表達式和字符集合來描述一個正確的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。理解這個表達式的關鍵是理解2[0-4]\d|25[0-5]|[01]?\d\d?,經過上面的介紹,相信讀者能分析得出來它的意義。

責任編輯:chenqingxiang 來源: 網界網
相關推薦

2010-03-03 13:22:08

Python正則表達式

2024-09-14 09:18:14

Python正則表達式

2021-01-27 11:34:19

Python正則表達式字符串

2010-03-25 18:25:36

Python正則表達式

2020-09-04 09:16:04

Python正則表達式虛擬機

2018-09-27 15:25:08

正則表達式前端

2010-03-01 15:51:59

Python則表達式

2010-03-11 08:55:45

python正則表達式

2019-12-10 10:40:57

Python正則表達式編程語言

2020-10-16 17:00:16

正則表達式字符Python

2016-11-10 16:21:22

Java 正則表達式

2009-09-16 17:15:57

正則表達式引擎

2022-01-04 11:35:03

Linux Shel正則表達式Linux

2023-09-13 08:12:45

2017-08-25 16:38:05

表達式正則血案

2017-05-12 10:47:45

Linux正則表達式程序基礎

2022-03-28 06:19:14

正則表達式開發

2009-02-18 09:48:20

正則表達式Java教程

2019-07-17 15:45:47

正則表達式字符串前端

2009-09-16 18:19:34

正則表達式組
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91福利在线导航 | 在线观看免费av网 | 青青草网 | 亚洲www啪成人一区二区麻豆 | 国产精品久久久久久久久久免费看 | 伊人伊人网 | 日本中文字幕在线视频 | 日韩精品一区二区三区视频播放 | 亚洲欧洲一区二区 | 精品影院| 成人免费视屏 | 久久九 | 久久人| 97人澡人人添人人爽欧美 | 9999国产精品欧美久久久久久 | 中文字幕久久精品 | 欧产日产国产精品99 | 在线观看国产视频 | 国产成人免费视频网站高清观看视频 | 国产精品美女久久久久久久网站 | 中文成人在线 | 一区久久| 亚洲一二三区在线观看 | 国产午夜亚洲精品不卡 | 伊人色综合久久久天天蜜桃 | 欧美性大战xxxxx久久久 | 中文字幕一级毛片视频 | www.五月天婷婷.com | 亚洲欧美日韩高清 | 麻豆av网站 | 日韩欧美大片在线观看 | 亚洲视频免费观看 | 亚洲天堂影院 | 色悠悠久| 久久久久久国产精品 | 日韩一区二区三区在线 | 日本五月婷婷 | 国产ts人妖系列高潮 | 亚洲精品不卡 | 美女黄网站视频免费 | 91av在线不卡|