首頁 > 軟體

Python正規表示式中flags引數的範例詳解

2022-04-01 13:01:47

flags引數

re.I
    IGNORECASE
    忽略字母大小寫

re.L
    LOCALE
    影響 “w, “W, “b, 和 “B,這取決於當前的在地化設定。

re.M
    MULTILINE
    使用本標誌後,‘^’和‘$’匹配行首和行尾時,會增加換行符之前和之後的位置。

re.S
    DOTALL
    使 “.” 特殊字元完全匹配任何字元,包括換行;沒有這個標誌, “.” 匹配除了換行符外的任何字元。

re.X
    VERBOSE
    當該標誌被指定時,在 RE 字串中的空白符被忽略,除非該空白符在字元類中或在反斜槓之後。
    它也可以允許你將註釋寫入 RE,這些註釋會被引擎忽略;
    註釋用 “#”號 來標識,不過該符號不能在字串或反斜槓之後。

忽略大小寫

import re
text = '我愛Python我愛python'
pat1 = 'p'
# search
r1 = re.findall(pattern=pat1, string=text, flags=re.I)
print(r1)

[‘P’, ‘p’]

多行模式

import re
text = '我愛數學n我愛Pythonn我愛python'
pat1 = '^我'
# search
r1 = re.findall(pattern=pat1, string=text)
r2 = re.findall(pattern=pat1, string=text, flags=re.M)
print(r1)
print(r2)

[‘我’]
[‘我’, ‘我’, ‘我’]

匹配任何字元

import re
text = '''
我愛Python
我愛pandas
'''
pat1 = '.我'
# search
r1 = re.findall(pattern=pat1, string=text, flags=re.S)
print(r1)
r2 = re.findall(pattern=pat1, string=text)
print(r2)

[’n我’, ‘n我’]
[]

補充:正規表示式中的flags

MULTILINE,多行模式, 改變 ^ 和 $ 的行為

In [63]: s
Out[63]: 'first linensecond linenthird line'
 
In [64]: pattern=re.compile(r'^w+')
 
In [65]: re.findall(pattern,s)
Out[65]: ['first']
 
In [67]: pattern=re.compile(r'^w+',re.M)
 
In [68]: re.findall(pattern,s)
Out[68]: ['first', 'second', 'third']

re.S   DOTALL,此模式下 '.' 的匹配不受限制,可匹配任何字元,包括換行符,也就是預設是不能匹配換行符

In [62]: s = '''first line
    ...: second line
    ...: third line'''
 
In [71]: regex=re.compile('.+',re.S)
 
In [73]: regex.findall(s)
Out[73]: ['first linensecond linenthird line']
 
In [74]: regex=re.compile('.+')
 
In [75]: regex.findall(s)
Out[75]: ['first line', 'second line', 'third line']

re.X    VERBOSE,冗餘模式, 此模式忽略正規表示式中的空白和#號的註釋

email_regex = re.compile("[w+.]+@[a-zA-Zd]+.(com|cn)")
 
email_regex = re.compile("""[w+.]+  # 匹配@符前的部分
                            @  # @符
                            [a-zA-Zd]+  # 郵箱類別
                            .(com|cn)   # 郵箱字尾  """, re.X)

總結

到此這篇關於Python正規表示式中flags引數的文章就介紹到這了,更多相關Python正規表示式flags引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com