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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式实际操作

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式实际操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 導入模塊
  • search方法
    • 作用
    • 注意點
    • 通配符(元字符)失效
    • 匹配任何數字
    • 匹配一個IP地址(初學版)
    • 字符類
      • 例子1:匹配元音字符:
        • 注意:
    • 表示范圍(-)
    • 限定重復匹配次數({})
      • 固定次數
      • 范圍次數
    • 躍躍欲試
      • 第一種想法
      • 第二種想法
      • 正確搞法
        • 解釋:
    • 匹配一個IP地址(進階版)
      • 版本1
      • 版本2

導入模塊

首先導入re模塊

import re

search方法

作用

search方法用于在字符串中搜索正則表達式模式第一次出現的位置。

re.search(r'dog','l like dog')

執行結果:

注意點

  • search方法第一個參數,也就是描述的搜索規則,需要使用原始字符串然后前面加個r進行編寫,這樣可以避免很多不必要的麻煩
  • 起始位置是從0開始的,找到就返回,找不到就返回null
  • 用find方法實現如下:

    'l like dog'.find('dog')

    執行結果:

    但是find方法具有局限性,不能使用通配符(正則表達式中的通配符是 . ,能匹配換行符之外的任何字符

    如下:

    re.search(r'.','l like dog')

    執行結果:

    re.search(r'fish.','l like fishc')

    執行結果:

    通配符(元字符)失效

    那么如果我們想匹配.號呢?也就是讓通配符失效,那該如何進行呢?如下:

    re.search(r'\.','l like dog.')

    執行結果:

    加個反斜杠( \ )即可做到
    反斜杠后邊跟元字符去除特殊功能,反斜杠后邊跟普通字符實現特殊功能

    匹配任何數字

    re.search(r'\d','a b c 1 2 3')

    執行結果:

    re.search(r'\d\d\d','avxsdf45679')

    執行結果:

    匹配一個IP地址(初學版)

    re.search(r'\d\d\d.\d\d\d.\d\d\d.\d\d\d','192.168.111.123')

    執行結果:

    存在兩個問題:

  • 我們這里寫法也就硬性規定每組IP必須三個數字,但是IP每組不一定是三個數字呀。。。假如是192.168.1.1該怎么匹配呢?(慢慢改嗎?)
  • 然后IP地址的每組范圍是0 ~ 255,我們的這種寫法的話,它的范圍就變成了0 ~ 999
  • 字符類

    元字符[ 和元字符] ,即中括號是兩個元字符,用它們來創建一個字符類,字符類的含義也就是只需要匹配到字符類中的任何一個字符,都算匹配成功。

    完整元字符

    . ^ $ * + ? { } [ ] \ | ( )

    例子1:匹配元音字符:

    re.search(r'[aeiou]','l like dog')

    執行結果:

    注意:

    正則表達式默認開啟大小寫敏感模式,即大寫的i和小寫的i是有區別的

    re.search(r'[aeiouAEIOU]','I like dog')

    執行結果:

    表示范圍(-)

    注意,第一個是大寫的i,不是小寫的L

    re.search(r'[a-z]','I like dog')

    執行結果:

    re.search(r'[0-9]','I like 123456 dog')

    執行結果:

    re.search(r'[3-9]','I like 123456 dog')

    執行結果:

    限定重復匹配次數({})

    固定次數

    re.search(r'bda{3}6','46asd5abdaaa68897')

    執行結果:

    范圍次數

    re.search(r'bda{1,6}6','46asd5abdaaaaa68897')

    執行結果:

    re.search(r'abcde{1,6}asdasd6','123458abcdeeasdasd6465465')

    執行結果:

    re.search(r'a{1,6}','aaaaaa')

    執行結果:

    re.search(r'a{1,6}','aaaaaaa')

    執行結果:

    re.search(r'a{2,6}','aa')

    執行結果:

    re.search(r'a{2,6}','a')

    返回為null

    躍躍欲試

    用正則表達式匹配188如何操作?

    第一種想法

    re.search(r'[0-255]','188')

    執行結果:

    第二種想法

    re.search(r'[0-2][0-5][0-5]','188')

    執行結果返回為null

    注意:正則表達式匹配的是字符串,數字對于字符來說只有0 ~ 9,

  • r'[0-255]'這個表示什么意思呢?也就是0 - 2然后兩個5 5,重復字符,即匹配四個字符 0 1 2 5
  • [0-2][0-5][0-5]這代表哪些呢?第一個是0 - 2 (字符0 1 2),第二個是 0 - 5(0 1 2 3 4 5),第三個是 0 - 5(0 1 2 3 4 5),以這些字符組合起來的都能被匹配到,(188后面8 和8字符第二個和第三個里面并沒有,所以返回值為null)如下圖所示
  • re.search(r'[0-2][0-5][0-5]','133')

    執行結果:

    re.search(r'[0-2][0-5][0-5]','011')

    執行結果:

    re.search(r'[0-2][0-5][0-5]','254')

    執行結果:

    正確搞法

    re.search(r'[0-1]\d\d|2[0-4]\d|25[0-5]','188')

    執行結果:

    解釋:

    [0-1]\d\d|2[0-4]\d|25[0-5]解釋一下:[0-1]代表這個字符可以是0或者是1,\d表示0-9,\d表示0-9,| 表示或,即有一個成立則全部成立;2[0-4]\d2表示字符2,[0-4]表示0 ~ 4, \d表示0 - 9;25[0-5]2表示字符2,5表示字符5,[0-5]表示0 ~ 5字符。我個人覺得應該和下面代碼的字符匹配作用一樣的吧

    re.search(r'[0-1][0-9][0-9]|2[0-4][0-9]|25[0-5]','188')

    匹配一個IP地址(進階版)

    版本1

    re.search(r'(([01]\d\d|2[0-4]\d|25[0-5])\.){3}([01]\d\d|2[0-4]\d|25[0-5])','192.168.111.121')


    然后我們利用{}再控制一下各自的重復次數

    版本2

    re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','192.168.1.1')

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的正则表达式实际操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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