python 正規表示式 分組的用法

2021-10-09 15:37:53 字數 1400 閱讀 7501

在正規表示式中,我們有時會見到類似這樣的寫法"(?!\d+).+?..*(

?y(?(?

y)",本篇就簡單介紹一下正規表示式的分組。

分組大概有這麼幾種用法

1.(?ppattern)命名分組

2.(?=pattern)前向肯定

3.(?!pattern)前向否定

4.(?<=pattern)後向肯定

5.(?這幾種用法可隨意搭配使用。

命名分組就是給匹配的內容起乙個別名。例如下面的例子,將日期年、月、日用命名分組的方式匹配出來。

import re

s1 =

" 日期 2020-04-08 2021-05-09 2022-06-10 "

print

(re.findall(r"(?p\d)-(?p\d)-(?p\d)"

, s1)

)print

(re.search(r"(?p\d)-(?p\d)-(?p\d)"

, s1)

.group(

'day'

))

結果為

若想擷取字串中間的一部分,可結合使用前向肯定和後向肯定。

s2 =

"從前有座山,山上有座廟/*這裡是解釋說明*/ 廟裡有個老和尚。"

print

("有選擇的擷取部分"

, re.findall(

"(?<=/\*).+(?=\*/)"

, s2)

)# 擷取/*之後 */之前的內容

s3 =

"1test.mi\ntest.py2\n3test.doc3\ntest.txt"

print

(re.findall(r'^(?!\d).+\..+(?=\d)'

, s3, re.m)

)# 不以數字開頭,但最後是數字

print

(re.findall(r'(?<=\d).+\..+(?

, s3, re.m)

)# 開頭是數字,但結尾不是數字

print

(re.findall(r'^(?!\d).+\..*(?

, s3, re.m)

)# 不以數字開頭,結尾也不知數字

print

(re.findall(r'^(?!\d).+\..*(?

, s3, re.m)

)# 不以數字開頭,並擷取數字之前的內容

若$在分組裡面,表示匹配到後面不是數字的部分。若$在分組外面,表示最末尾不能是數字。

Python 正規表示式(分組)

分組就是用一對圓括號 括起來的正規表示式,匹配出的內容就表示乙個分組。從正規表示式的左邊開始看,看到的第乙個左括號 表示第乙個分組,第二個表示第二個分組,依次類推,需要注意的是,有乙個隱含的全域性分組 就是0 就是整個正規表示式。分完組以後,要想獲得某個分組的內容,直接使用group num 和gr...

Python正規表示式的分組

1.將括號中的字元作為乙個分組 2.num 引用num匹配到的字串 3.p name 起組名 4.p name 引用name匹配到的字串 將字串分組進行匹配 看例子及注釋 import re pattern r d 1 9 d s 010 123456 o re.match pattern,s pr...

正規表示式 分組

正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...