日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

非常好理解的python re正则表达式入手

發布時間:2024/3/13 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非常好理解的python re正则表达式入手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 案例一
    • 1.去掉/剔除掉字符串中的某些特定字符
    • 2.怎么實現
    • 3.從案例中學習
  • 案例二
    • 1.確實字符串是否僅包含某些特定字符
    • 2.具體實現
    • 3.案例學習
  • 案例三
    • 去掉字符串中的所有表情包

直接寫例子,來入手正則。

案例一

1.去掉/剔除掉字符串中的某些特定字符

目標1:有一行字符串,去掉其中的非中文字符
實現1:keep_chinese()函數

目標2:有一行字符串,去掉其中的非中文、非英文、非數字字符
實現2:keep_chinese_and_num_and_eng()函數,用re.compile()和re.sub()

2.怎么實現

import redef keep_chinese(line):pattern = re.compile(r'[^\u4e00-\u9fa5]') #匹配非中文的字符chinese = re.sub(pattern,'',line) #將非中文的替換為空字符return chinesedef keep_chinese_and_num_and_eng(line):"""去除字符串中非中文、非數字、非英文的字符"""pattern = re.compile(r'[^\u4e00-\u9fa5^a-z^A-Z^0-9]')#匹配非中文、非英文、非數字的字符new_line = re.sub(pattern, '', line) #將非...的字符替換為空字符return new_line if __name__ == '__main__':line = "(2020, 001, '1號背誦《詠鵝》~~~鵝鵝鵝,曲項向天歌。白毛浮綠水,紅掌撥清波。abc....')"uid = line.split(',')[0]fid = line.split(',')[1]content = line.split(',',2)[2]#注意,split可以設置分隔兩次print(content)print('------') # new_content = keep_chinese(content)new_content = keep_chinese_and_num_and_eng(content)print(new_content)newline = uid + ',' + fid + ',' + new_content + '\n'

輸出:1號背誦詠鵝鵝鵝鵝曲項向天歌白毛浮綠水紅掌撥清波abc

3.從案例中學習

1、re庫:正則匹配功能
2、re.compile(r'[^\u4e00-\u9fa5]') #匹配非中文的字符
re.compile(r'[^\u4e00-\u9fa5^a-z^A-Z^0-9]')#匹配非中文、非英文、非數字的字符
3、re.sub(pattern, '', line)#將非中文的替換為空字符

編譯正則表達式:re.compile()
檢索和替換:re.sub() 參數:pattern正則中的模式字符串,repl用來替換的字符串也可以是函數,string原字符串

4、pattern 模式
[^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符
[0-9] 匹配任何數字。類似于 [0123456789]
[a-z]匹配任何小寫字母
[a-zA-Z0-9]匹配任何字母及數字

案例二

1.確實字符串是否僅包含某些特定字符

目標:判斷字符串是否僅包含大小寫字母數字和“_”“-”。eg.“01-word” “01-03”
實現:is_special_str()函數,用re.match()

2.具體實現

# 功能:判斷是否是這樣一個字符串:僅包含大小寫字母數字和"-""_" def is_special_str(query):flag = Falsepattern = r'[\dA-Za-z\-\_]+$'result = re.match(pattern, query) print(result) # 字符串滿足條件情況下:<_sre.SRE_Match object; span=(0, 7), match='01-word'> 類型:<class '_sre.SRE_Match'># 不滿足條件情況下:Noneif result:flag = True# 當result非None時,還能獲取以下信息:print(result.group())print(result.span()) # (0,7) 匹配開始的(起始位置,終止位置)print(result.start()) # 0print(result.end()) # 7# else:# print("不滿足")return flagif __name__ == "__main__":query = "01-word"# query = "01-word世界"if is_special_str(query):print("是")

3.案例學習

re.match(pattern, string, falgs):
從頭(注意是從0位置來開始匹配)匹配一個符合規則的字符串
匹配成功返回一個match object對象;不成功則返回None
注意:match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回None

pattern:正則模型
string:要匹配的字符串
falgs:匹配模式

match還可以這樣用:

result = re.match("喜歡", "我喜歡你的信息素") # 匹配不到 result = re.match("喜歡", "喜歡你的信息素") # 匹配的到

re.search()就都可以:

result = re.search("喜歡", "我喜歡你的信息素") # 匹配的到 result = re.search("喜歡", "喜歡你的信息素") # 匹配的到

match()和search()的區別:
match()函數只檢測RE是不是在string的開始位置匹配
search() 會掃描整個string查找匹配

案例三

去掉字符串中的所有表情包

import emoji emoji.demojize(str)

總結

以上是生活随笔為你收集整理的非常好理解的python re正则表达式入手的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。