1. 程式人生 > >Python學習筆記模式匹配與正則表達式之用正則表達式匹配更多模式

Python學習筆記模式匹配與正則表達式之用正則表達式匹配更多模式

重復 實例 int clas span 就是 image 特定 mat

隨筆記錄方便自己和同路人查閱。

#------------------------------------------------我是可恥的分割線-------------------------------------------

  既然你已知道用 Python 創建和查找正則表達式對象的基本步驟,就可以嘗試一些更強大的模式匹配功能了。

#------------------------------------------------我是可恥的分割線-------------------------------------------

  1、利用括號分組,示例代碼:

#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import re#用 import re 導入正則表達式模塊。
phoneNumregex = re.compile(r‘(\d{3})-(\d{3}-\d{4})
‘)#使用括號進行分組。 text = phoneNumregex.search(‘My number is 415-555-4242‘)#向 Regex 對象的 search()方法傳入想查找的字符串。它返回一個 Match 對象。 print(text.group(1))#調用 Match 對象的 group()方法,返回分組1的內容。

  運行結果:

技術分享圖片

  2、用管道匹配多個分組,示例代碼:

技術分享圖片

  字符|稱為“管道”。希望匹配許多表達式中的一個時,就可以使用它。例如,正則表達式 r‘Batman|Tina Fey‘將匹配‘Batman‘或‘Tina Fey‘。

如果 Batman 和 Tina Fey 都出現在被查找的字符串中,第一次出現的匹配文本,將作為 Match 對象返回。

  3、用問號實現可選匹配,示例代碼:

技術分享圖片

  有時候,想匹配的模式是可選的。就是說,不論這段文本在不在,正則表達式都會認為匹配。字符?表明它前面的分組在這個模式中是可選的。

  4、用星號匹配零次或多次,示例代碼:

技術分享圖片

  *(稱為星號)意味著“匹配零次或多次”,即星號之前的分組,可以在文本中出Python 編程快速上手——讓繁瑣工作自動化現任意次。它可以

完全不存在,或一次又一次地重復。

  對於‘Batman‘,正則表達式的(wo)*部分匹配 wo 的零個實例。對於‘Batwoman‘,(wo)*匹配 wo 的一個實例。對於‘Batwowowowoman‘,(wo)*匹配

wo 的 4 個實例。

  如果需要匹配真正的星號字符,就在正則表達式的星號字符前加上倒斜杠,即\*。

  5、用加好匹配一次或多次,示例代碼:

技術分享圖片

  *意味著“匹配零次或多次”,+(加號)則意味著“匹配一次或多次”。星號不要求分組出現在匹配的字符串中,但加號不同,加號前面的分組必須“至少

出現一次”。這不是可選的。

  正則表達式 Bat(wo)+man 不會匹配字符串‘The Adventures of Batman‘,因為加號要求 wo 至少出現一次。
  如果需要匹配真正的加號字符,在加號前面加上倒斜杠實現轉義:\+。

  6、用花括號匹配特定次數,示例代碼:

  

#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import re#用 import re 導入正則表達式模塊。
phoneNumregex = re.compile(r‘(\d{3})-(\d{3}-\d{4})‘)#使用括號進行分組。
text = phoneNumregex.search(‘My number is 415-555-4242‘)#向 Regex 對象的 search()方法傳入想查找的字符串。它返回一個 Match 對象。
print(text.group(1))#調用 Match 對象的 group()方法,返回分組1的內容。


phoneNumregex = re.compile(r‘(\d\d\d)-(\d\d\d-\d\d\d\d)‘)#使用括號進行分組。
text = phoneNumregex.search(‘My number is 415-555-4242‘)#向 Regex 對象的 search()方法傳入想查找的字符串。它返回一個 Match 對象。
print(text.group(1))#調用 Match 對象的 group()方法,返回分組1的內容。

  運行結果:

技術分享圖片

  根據結果可以看出,兩段代碼效果完全一致,花括號只是匹配相同內容的次數。

Python學習筆記模式匹配與正則表達式之用正則表達式匹配更多模式