正則表達式中[\b],\b,\B的用法:


re模塊中flags:

1.re.I
Ignorecase 忽略大小寫
2.re.L
Locala-aware本地化識別匹配
3.re.M
Multiline 多行匹配,"^"與"$"匹配行首與行尾,會增加換行符之前和之后.
4.re.S
dotall 使"."特殊字符完全匹配任何字符,包括換行;沒有這個標志,"."匹配除了換行符外的任何字符
5.re.X
verbose  當該標志被指定時,在 RE 字符串中的空白符被忽略,除非該空白符在字符類中或在反斜杠之后。
    它也可以允許你將注釋寫入 RE,這些注釋會被引擎忽略;
    注釋用 “#”號 來標識,不過該符號不能在字符串或反斜杠之后。

示例:

import re
#關於flags的設置

#1.忽略大小寫
text = 'PYTHON  python'
p1 = 'p'
print('忽略大小寫:',re.findall(p1,text,flags=re.I))

#2.多行模式
text = '我愛數學\n我愛Python\n我愛python'
pat1 = '^我'
r1 = re.findall(pattern=pat1, string=text)
r2 = re.findall(pattern=pat1, string=text, flags=re.M)
print('非多行匹配:',r1)
print('  多行匹配:',r2)

#匹配任何字符:
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)
##########################
忽略大小寫: ['P', 'p']
非多行匹配: ['我']
  多行匹配: ['我', '我', '我']
包括換行符: ['\n我', '\n我']
不帶換行符: []

re模塊中sub用法:

​ 用於替換字符串中的匹配項

re.sub(pattern,repl,string,count=0,flags=0)

  • pattern 正則中的模式串

  • repl 替換的字符串,也可以是函數

  • string 要被查找替換的原始字符串

  • count 模式匹配后替換的最大次數,默認是0

    import re
    phone = "2004-959-559 # 這是一個國外電話號碼"
    
    # 刪除字符串中的 Python注釋
    num = re.sub(r'#.*$', "", phone)
    print("電話號碼是: ", num)
    #匹配電話號碼
    num = re.sub(r'\D', "", phone)
    print("電話號碼是: ", num)
    

re.compile:

​ compile函數用於編譯正則表達式,生成一個正則表達式(pattern)對象,和findall,match與search函數使用.

re.compile(pattern[,flags])

import re


def main():
    content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
    regex = re.compile('\w*o\w*')
    x = regex.findall(content)
    print(x)


if __name__ == '__main__':
    main()
# ['Hello', 'from', 'Chongqing', 'montain', 'to', 'you']

正則表達式關於[\b],\b,\B的區別:

  • [\b]匹配轉義字符\b本身,匹配退格鍵\u0008
	
print(re.sub(re.compile(r"[\b]", re.S), "|", "That \bdang-to_ot_in' \b#!@\b#$ var\bmint's cost me $199.95!"))
##########################
That |dang-to_ot_in' |#!@|#$ var|mint's cost me $199.95!
  • \b 匹配字母或數字邊界

    注意:\b屬於匹配位置的元字符,一般作占位作用,而不被捕獲,同屬於匹配位置的還有匹配行起始位^和行結束位$

    匹配必須出現在 \w (字母數字)和 \W (非字母數字)字符之間的邊界上

    print(re.sub(re.compile(r"\b", re.S), "|", "That \bdang-to_ot_in' \b#!@\b#$ var\bmint's cost me $199.95!"))
    ##################
    |That||dang|-|to_ot_in|'#!#$ |var|mint|'|s| |cost| |me| $|199|.|95|!
    
  • \B 匹配非字母和數字邊界

    匹配不得出現在 \b 邊界上

    print(re.sub(re.compile(r"\B", re.S), "|", "That \bdang-to_ot_in' \b#!@\b#$ var\bmint's cost me $199.95!"))
    ##############################
    T|h|a|t d|a|n|g-t|o|_|o|t|_|i|n'| |#|!|@|#|$| v|a|m|i|n|t's c|o|s|t m|e |$1|9|9.9|5!|
    


免責聲明!

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



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