使用正則表達式匹配


Python語言及其應用

 7.1.3使用正則表達式匹配

正則表達式使用:首先需要定義一個用於匹配的模式(pattern)字符串和一個匹配的對象:源(source)字符串,如下,

Result = re.match(‘’You,’Young France’)

這里的 “You”是模式,“Young France”是源——你想檢查的字符串。函數用於查看源是否以模式開頭。

 

以下列出幾種匹配方法,

match( )以某某開頭作精准匹配,

search( )會返回第一次成功匹配,如果存在的話

findall( )會返回所有不重疊的匹配,如果存在的話

split( )會根據pattern將source切分成若干段,返回由這些片段組成的列表

sub( )還需要一個額外的參數repacement,他會把source中所有匹配pattern給出replacement

  

1、使用match( )進行精准匹配

[root@promethus te]# python

Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)

[GCC 7.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import re

>>> aaa = 'Young FranceYou'

>>> m = re.match('You', aaa)

>>> print(m)

<_sre.SRE_Match object; span=(0, 3), match='You'>

>>> print(m.group())

You

 

 >>> n = re.match('.*Fran', aaa)

>>> print (n)

<_sre.SRE_Match object; span=(0, 10), match='Young Fran'>

>>> print (n.group())

Young Fran

>>> 

以下對新模式能夠匹配成功的解釋:

.代表任何單一字符

*代表任意一個它之前的字符.*代表任意多個字符(包括0個)

 

2、使用search( )尋找首次匹配

使用search('Frank', aaa)查找任意位置的“Frank”或“Fran”,無需通配符。

 

  

3、使用findall( )尋找所有匹配

結合.*?匹配規則進行。

 

  

4、使用split ( )按匹配切分

將一個字符串切分成由一系列的子串組成的列表

 

  

5、使用sub ( )替換匹配

 

  

6、模式:特殊字符歸類

模式    匹配

\d     一個數字字符

\D     一個非數字字符

\w    一個字母或數字字符

\W    一個非字母非數字字符

\s     空白符

\S     非空白符

\b     單詞邊界(一個\w與\W之間的范圍,順序可逆)

\B     非單詞邊界

 驗證操作

 

  

7、模式:使用標識符

模式    匹配

abc     文本值abc

.        除\n外的任何字符

^        源字符串的開頭

$        源字符串的結尾

prev?      0個或1個prev

prev*      0個或多個prev,盡可能多的匹配

prev*?     0個或多個prev,盡可能少的匹配

prev+      1個或多個prev,盡可能多的匹配

prev+?     1個或多個prev,盡可能少的匹配

prev{m}      m個連續的prev

prev{m,n}    m到n個連續的prev,盡可能多的匹配

prev{m,n}    m到n個連續的prev,盡可能少的匹配

[abc]         a或b或c,跟[a|b|c]一樣

[^abc]        非(a或b或c

prev(?=next)       如果后面為next,返回prev

prev(?!next)       如果后面為非next,返回prev

(?<=prev)next      如果前面為prev,返回next

(?<!prev)next      如果前面為非prev,返回next

示例

>>> sour = '''I wish I may, I wish I might

... Have a dish of fish toight.'''

>>> re.findall('wish', sour)             

['wish', 'wish']

 

  

8、模式:定義匹配的輸出

當使用時match( )或search( )時,所有的匹配會以的形式返回對象m.group()中,如果你用括號將某一個模式包裹起來,括號中模式匹配得到的結果歸自己的group中,而調用m.groups()可以得到包含這些匹配的元祖,如下,

>>> import re

>>> sour = '''I wish I may, I wish I might

... Have a dish of fish toight.'''

>>> m = re.search(r'(?P<DISH>. dish\b).*(?P<FISH>\bfish)', sour)

>>> m.group()

 

自此,完成正則匹配基本功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM