正規表示式是用來簡潔表達一組字串的表達式,本文主要和大家分享Python 中正規表示式知識詳解,希望能幫助大家。
運算子 |
說明 |
實例 |
##. | 表示任何單一字元 |
|
[ ] | 字元集,單一字元取值範圍 |
[abc]表示a或b或c; [a-z]表示a到z單一字元
|
##[^ ]
非字元集,單一字元排除範圍 |
| [^abc]表示非a或非b或非c
| ##*
前一個字元的0次或無限次擴充 |
abc* | 表示ab、abc、abcc、abccc...
| +
前一個字元的1次或無限次擴展 |
abc+ | 表示abc、abcc、abccc...
| ?
前一個字元的0次或1次擴充 |
#abc? | 表示ab、abc
| |
左右表示任一 |
#abc|def | 表示abc或def
| {m}
前一個字元的m次擴充 |
#ab{2} | 表示abcc
| {m,n}
前一個字元的m至n次擴充(含n) |
ab{1, 2} | 表示abc、abcc
| ^
符合字串開頭 |
^abc | 表示abc且在一個字串的開頭
| $
匹配字串結尾 |
abc$ | 表示abc並且在一個字串的結尾
| ( )
分組標記,內部只能使用|運算子 |
(abc|def ) | 表示abc或def
| \d
數字,等價於[0-9] |
|
| \w
單字字符,等價於[A-Za-z0-9_] |
|
|
如果熟悉上面的運算子的話,下面的例子就不難了。
1.只能輸入數字:^[0-9]*$
2.只能輸入n位的數字:^\d{n}$
3.只能輸入至少n位的數字:^\d{n,}$
4.只能輸入m~n位的數字:^\d{m,n}$
#5.只能輸入零和非零開頭的數字:^(0|[1-9][0-9]*)$
6.只能輸入有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
7.只能輸入有1~3位小數的正實數:^[0-9]+( .[0-9]{1,3})?$
8.只能輸入非零的正整數:^+?[1-9][0-9]*$
【Python3正規表示式】
函數
|
|
re.match()
從字串的起始位置配對一個模式,如果起始位置符合不成功的話,match()就回傳none。 |
| re.search()
掃描整個字串並傳回第一個成功的匹配。 |
| re.sub()
用於取代字串中的所有符合正規表示式的子字串,傳回替換後的字串 | | #re.findall()
搜尋字串,以列表形式傳回全部能匹配的子字串 |
| re.split()
將字串依照正規表示式比對結果切割,傳回列表 |
| #re.finditer()
搜尋字串,傳回一個符合結果的迭代類型,每個迭代元素是match物件 |
| #>>> match= re.findall(r'[1-9]\d{5}','100081BIT BIT10008676')>>> print(match)
['100081', '100086']>>> match = re.split(r'[1-9]\d{5}','100081BIT BIT10008676')>>> match
['', 'BIT BIT', '76']>>> match = re.split(r'[1-9]\d{5}','100081BIT BIT10008676',maxsplit=1)>>> match
['', 'BIT BIT10008676']
>>>for m in re.finditer(r'[1-9]\d{5}','100081BIT BIT10008676'): if m:
print(m.group(0))
100081100086
登入後複製
登入後複製
re.match與re.search的區別
re.match只符合字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函數傳回None;而re. search匹配整個字串,直到找到一個匹配。
運算子 | 說明 | 實例 |
---|
| |
|
| |
|
| ##. | 表示任何單一字元
|
| [ ] | #字元集,單一字元取值範圍 [abc]表示a或b或c; [a-z]表示a到z單一字元 |
[^ ] | 非字元集,單一字元排除範圍 | [^abc]表示非a或非b或非c
| #*
前一個字元的0次或無限次擴展 | #abc* | 表示ab、abc、abcc、abccc...
| +
前一個字元的1次或無限次擴充 | abc+ | 表示abc 、abcc、abccc...
| ?
前一個字元的0次或1次擴充 | abc? | 表示ab、abc
| |
#左右表示任一個 | abc|def | 表示abc或def
| {m}
前一個字元的m次擴充 | ##ab{ 2}表示 | abcc
|
{m,n}前一個字元的m至n次擴充(含n) | | ab{1,2}表示abc、abcc |
#^ | ##符合字串開頭 | ^abc表示abc且在一個字串的開頭
| #$
符合字串結尾 | abc$ | 表示abc且在一個字串的結尾
|
( )#分組標記,內部只能使用|運算子 | | (abc|def)表示 abc或def |
#\d
##數字,等價於[0-9]\w
單字字符,等價於[A-Za-z0-9_]
如果熟悉上面的運算子的話,下面的例子就不難了。 1.只能輸入數字:^[0-9]*$2.只能輸入n位的數字:^\d{n}$ 3.只能輸入至少n位的數字:^\d{n,}$ | 4.只能輸入m~n位的數字:^\d{m,n}$ |
#5.只能輸入零和非零開頭的數字:^(0|[1-9][0-9]*)$6.只能輸入有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$7.只能輸入有1~3位小數的正實數:^[0-9]+( .[0-9]{1,3})?$ | 8.只能輸入非零的正整數:^+?[1-9][0-9]*$ |
【Python3正規表示式】 | |
函數 | |
re.match() | 從字串的起始位置配對一個模式,如果起始位置符合不成功的話,match()就回傳none。 |
re.search() | 掃描整個字串並傳回第一個成功的匹配。 |
re.sub() | 用於取代字串中的所有符合正規表示式的子字串,傳回替換後的字串 |
#re.findall()搜尋字串,以列表形式傳回全部能匹配的子字串
re.split()
將字串依照正規表示式比對結果切割,傳回清單#re.finditer()
搜尋字串,傳回一個符合結果的迭代類型,每個迭代元素是match物件
>>> match= re.findall(r'[1-9]\d{5}','100081BIT BIT10008676')>>> print(match)
['100081', '100086']>>> match = re.split(r'[1-9]\d{5}','100081BIT BIT10008676')>>> match
['', 'BIT BIT', '76']>>> match = re.split(r'[1-9]\d{5}','100081BIT BIT10008676',maxsplit=1)>>> match
['', 'BIT BIT10008676']
>>>for m in re.finditer(r'[1-9]\d{5}','100081BIT BIT10008676'): if m:
print(m.group(0))
100081100086
登入後複製
登入後複製
re.match與re.search的區別re.match只符合字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函數傳回None;而re.search匹配整個字串,直到找到一個匹配。
###############相關推薦:#########關於js正規表示式詳解###########php正規則表達式詳解_PHP教學############非常重要的php正規表示式詳解,php正規表示式詳解######
以上是Python 中正規表示式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!