• <sub id="xcyjv"></sub><nav id="xcyjv"><code id="xcyjv"><meter id="xcyjv"></meter></code></nav>
      <nav id="xcyjv"></nav>
    1. <form id="xcyjv"><th id="xcyjv"></th></form><nav id="xcyjv"><mark id="xcyjv"></mark></nav>

        正則表達式之文本模式的匹配和查找

         更新時間:2019年08月23日 15:42:54   作者:IT派森   我要評論
        這篇文章主要介紹了正則表達式之文本模式的匹配和查找操作方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

        1、需求

        我們想要按照特定的文本模式進行匹配或查找。

        2、解決方案

        如果想要匹配的只是簡單的文字,那么通常只需要用基本的字符串方法就可以了,比如str.find()、str.endswith()、str.startswith()或類似函數。

        示例:

        text='mark ,帥哥,18,183 帥,mark'
        print(text=='mark')
        print(text.startswith('mark'))
        print(text.startswith('mark'))
        print(text.find('帥哥'))

        結果:

        False
        True
        True
        6

        如果更為復雜的匹配則需要使用正則表達式以及re模塊。為了說明使用正則表達式的基本流程,假設我們想匹配以數字形式構成的日期,比如"11/27/2018"。示例如下:

        import re
        text1='11/27/2018'
        text2='Nov 27, 2018'
        if re.match(r'\d+/\d+/\d+',text1):
          print('符合模型:數字/數字/數字')
        else:
          print('不符合模型:數字/數字/數字')
        
        if re.match(r'\d+/\d+/\d+',text2):
          print('符合模型:數字/數字/數字')
        else:
          print('不符合模型:數字/數字/數字')

        運行結果:

        符合模型:數字/數字/數字
        不符合模型:數字/數字/數字

        如果打算針對同一模型做多次匹配,那么通常會先將正則表達式模式預編譯成一個模式對象。

        例如:

        import re
        text1='11/27/2018'
        text2='Nov 27, 2018'
        datepat=re.compile(r'\d+/\d+/\d+')
        if datepat.match(text1):
          print('符合模型:數字/數字/數字')
        else:
          print('不符合模型:數字/數字/數字')
        
        if datepat.match(text2):
          print('符合模型:數字/數字/數字')
        else:
          print('不符合模型:數字/數字/數字')

        結果:

        符合模型:數字/數字/數字
        不符合模型:數字/數字/數字

        match()方法總是嘗試在字符串的開頭找到匹配項。如果想針對整個文本搜索出所有的匹配項,那么就應該使用findall()方法,例如:

        import re
        text='今天是 11/27/2018,昨天是11/26/2018'
        datepat=re.compile(r'\d+/\d+/\d+')
        print(datepat.findall(text))

        運行結果:

        ['11/27/2018', '11/26/2018']

        當定義正則表達式時,我們常會將部分模式用括號包起來的方式引入捕獲組,捕獲組通常簡化后續對匹配文本的處理,因為每個組的內容都可以單獨提取出來。findall()方法搜索整個文本并找出所有的匹配項然后將它們以列表的形式返回。如果想以迭代的方式找出匹配項,可以使用finditer()方法。

        例如:

        import re
        #加入捕獲組
        datepat=re.compile(r'(\d+)+/(\d+)+/(\d+)')
        m=datepat.match('11/27/2018')
        print(m.group(0))
        print(m.group(1))
        print(m.group(2))
        print(m.group(3))
        print(m.groups())
        month,day,year=m.groups()
        print(month)
        print(day)
        print(year)
        
        print('*'*20)
        
        text='今天是 11/27/2018,昨天是11/26/2018'
        for month,day,year in datepat.findall(text):
          print('{}-{}-{}'.format(year,month,day))
        
        print('*'*20)
        
        for m in datepat.finditer(text):
          print(m.groups())

        結果:

        11/27/2018
        11
        27
        2018
        ('11', '27', '2018')
        11
        27
        2018
        ********************
        2018-11-27
        2018-11-26
        ********************
        ('11', '27', '2018')
        ('11', '26', '2018')

        3、分析

        本節主要介紹了re模塊對文本匹配和搜索的基本功能,首先用re.compile()對模式進行編譯,然后使用想match()、findall()、finditer()這樣的方法做匹配和搜索。

        當指定模式時我們通常會使用原始字符串,例如:

        r'(\d+)/(\d+)/(\d+)'

        這樣的字符串不會對反斜字符轉義,這在正則表達式中非常有用。否則,我們需要用雙反斜杠線來標識一個單獨的'',例如:

        '(\\d+)/(\\d+)/(\\d+)'

        請注意match()方法只會檢查字符的開頭,有可能出現的匹配的結果并不是你想要的,例如:

        import re
        #加入捕獲組
        datepat=re.compile(r'(\d+)+/(\d+)+/(\d+)')
        m=datepat.match('11/27/2018xxxx')
        print(m)

        結果:

        <re.Match object; span=(0, 10), match='11/27/2018'>

        如果想要精確匹配,可以加一個結束標記:$

        import re
        #加入捕獲組
        datepat=re.compile(r'(\d+)+/(\d+)+/(\d+)$')
        m1=datepat.match('11/27/2018xxxx')
        m2=datepat.match('11/27/2018')
        print(m1)
        print(m2)

        結果:

        None
        <re.Match object; span=(0, 10), match='11/27/2018'>

        如果只是執行簡單的文本匹配和搜索操作,可以省略編譯步驟。
        如果打算執行很多匹配或查找操作的話,通常需要先將模式編譯然后重復使用。模塊級的函數會對最近編譯過的模式做緩存處理,并且比較省步驟。

        總結

        以上所述是小編給大家介紹的正則表達式之文本模式的匹配和查找,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
        如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

        相關文章

        最新評論

        01彩票网app
      1. <sub id="xcyjv"></sub><nav id="xcyjv"><code id="xcyjv"><meter id="xcyjv"></meter></code></nav>
          <nav id="xcyjv"></nav>
        1. <form id="xcyjv"><th id="xcyjv"></th></form><nav id="xcyjv"><mark id="xcyjv"></mark></nav>
            固原 | 赣州 | 蓬莱 | 鹤岗 | 深圳 | 崇左 | 保亭 | 萍乡 | 山南 | 淮北 | 吴忠 | 瑞安 | 云南昆明 | 常州 | 安吉 | 宿州 | 安庆 | 北海 | 定西 | 海北 | 咸阳 | 慈溪 | 四平 | 张掖 | 钦州 | 长兴 | 台北 | 雄安新区 | 保亭 | 揭阳 | 阜新 | 文山 | 新余 | 唐山 | 余姚 | 湛江 | 邢台 | 任丘 | 廊坊 | 定州 | 大兴安岭 | 扬州 | 台中 | 潍坊 | 宁德 | 梅州 | 晋江 | 达州 | 攀枝花 | 黑河 | 蚌埠 | 博罗 | 湘西 | 青海西宁 | 沧州 | 临汾 | 六安 | 南平 | 邢台 | 亳州 | 楚雄 | 巢湖 | 大同 | 日喀则 | 宜都 | 中卫 | 红河 | 渭南 | 和县 | 新沂 | 昌都 | 黑河 | 资阳 | 宣城 | 沛县 | 保定 | 昆山 | 济南 | 哈密 | 安吉 | 包头 | 茂名 | 福建福州 | 宜昌 | 偃师 | 南安 | 鸡西 | 桐乡 | 溧阳 | 香港香港 | 黔东南 | 鹰潭 | 宁夏银川 | 馆陶 | 遵义 | 宁德 | 临夏 | 白山 | 江门 | 庆阳 | 忻州 | 澳门澳门 | 廊坊 | 宁国 | 深圳 | 阿拉善盟 | 大丰 | 莒县 | 那曲 | 抚州 | 涿州 | 西双版纳 | 泗洪 | 连云港 | 诸城 | 黔南 | 连云港 | 莆田 | 邹城 | 昌吉 | 临沧 | 常州 | 鄂州 | 揭阳 | 惠东 | 邢台 | 绥化 | 乌海 | 曲靖 | 慈溪 | 吴忠 | 克拉玛依 | 七台河 | 濮阳 | 灵宝 | 三亚 | 东方 | 南京 | 韶关 | 和田 | 定西 | 白沙 | 庆阳 | 佛山 | 邢台 | 高雄 | 乐清 | 达州 | 基隆 | 嘉善 | 鹤岗 | 海拉尔 | 运城 | 单县 | 亳州 | 西藏拉萨 | 厦门 | 林芝 | 三亚 | 塔城 | 迪庆 | 嘉峪关 | 庄河 | 泸州 | 巴彦淖尔市 | 建湖 | 昌都 | 广汉 | 三明 | 台州 | 仁怀 | 鄂州 | 咸阳 | 锡林郭勒 | 阿拉善盟 | 益阳 | 永新 | 邹平 | 龙岩 | 佛山 | 铁岭 | 渭南 | 临海 | 恩施 | 仁寿 | 金华 | 马鞍山 | 乐清 | 保定 | 定州 | 周口 | 昌吉 | 高雄 | 铜陵 | 库尔勒 | 如皋 | 长治 | 石狮 | 乐平 | 福建福州 | 乌兰察布 | 金昌 | 资阳 | 临猗 | 长治 | 长兴 | 鸡西 | 开封 | 甘孜 | 汉川 | 仁怀 | 镇江 | 楚雄 | 黄南 | 黄山 | 贵州贵阳 | 葫芦岛 | 绍兴 | 任丘 | 清徐 | 如皋 | 台湾台湾 | 黔南 | 诸暨 | 伊犁 | 中卫 | 东莞 | 湖南长沙 | 枣阳 | 台南 | 定西 | 南阳 | 眉山 | 嘉兴 | 迁安市 | 日喀则 | 漳州 | 石嘴山 | 湛江 | 黄石 | 临沧 | 孝感 | 鄢陵 | 安顺 | 长葛 | 六盘水 | 泰安 | 莱州 | 扬州 | 淮北 | 十堰 | 乌海 | 瑞安 | 海南 | 湛江 | 滕州 | 德州 | 库尔勒 | 克拉玛依 | 三明 | 鸡西 | 咸阳 | 抚州 | 青州 | 白城 | 伊春 | 贵州贵阳 | 济南 | 榆林 | 南安 | 江门 | 荆门 | 青海西宁 | 保山 | 赵县 | 菏泽 | 神农架 | 莱州 | 茂名 | 江苏苏州 | 六安 | 鄂尔多斯 | 泗洪 | 崇左 | 黄南 | 濮阳 | 珠海 | 榆林 | 燕郊 | 三河 | 七台河 | 瓦房店 | 芜湖 | 邳州 | 宣城 | 诸暨 | 安庆 | 驻马店 | 张掖 | 大连 | 瓦房店 | 澳门澳门 | 洛阳 | 阿拉尔 | 江西南昌 | 济南 | 黄石 | 博尔塔拉 | 招远 | 龙岩 | 宿迁 | 长垣 | 台中 | 迁安市 | 广饶 | 文山 | 大庆 | 宁德 | 山南 | 濮阳 | 西藏拉萨 | 雅安 | 包头 | 伊犁 | 阜新 | 永康 | 海东 | 东阳 | 灌南 | 三河 | 通化 | 茂名 | 晋城 | 保山 | 白山 | 如东 | 嘉峪关 | 晋中 | 晋江 | 白山 | 安吉 | 辽宁沈阳 | 黄南 | 宁波 | 景德镇 | 常州 | 湘潭 | 广元 | 吉林长春 | 长兴 | 图木舒克 | 云浮 | 牡丹江 | 包头 | 楚雄 | 丹阳 | 深圳 | 德清 | 沧州 | 鄂尔多斯 | 金昌 | 湖北武汉 | 漳州 | 汕尾 | 山东青岛 | 白银 | 黔南 | 汉川 | 瓦房店 | 邳州 | 泗洪 | 吐鲁番 | 荆州 | 濮阳 | 偃师 | 鹤岗 | 琼海 | 淮安 | 曲靖 | 东阳 | 双鸭山 | 沛县 | 崇左 | 香港香港 | 甘南 | 抚州 | 宝鸡 | 眉山 | 临海 | 晋城 | 盐城 | 克孜勒苏 | 景德镇 | 张家口 | 禹州 | 中卫 | 商丘 | 文昌 | 赵县 | 清远 | 本溪 | 大庆 | 博尔塔拉 | 萍乡 | 四川成都 | 丹阳 | 邵阳 | 开封 | 张家口 | 牡丹江 | 诸暨 | 中卫 | 海西 | 澄迈 | 五家渠 | 呼伦贝尔 | 呼伦贝尔 | 诸暨 | 周口 | 榆林 | 鸡西 | 毕节 | 泗阳 | 台湾台湾 | 商洛 | 巢湖 | 武夷山 | 兴安盟 | 酒泉 | 海拉尔 | 邹平 | 咸阳 | 安康 | 湘潭 | 孝感 | 潮州 | 泉州 | 鄂尔多斯 | 咸宁 | 株洲 | 清徐 | 安庆 | 玉树 | 邢台 | 简阳 | 柳州 | 甘南 | 白银 | 湖北武汉 | 阿里 | 通辽 | 清远 | 驻马店 | 兴安盟 | 日土 | 汉中 | 吐鲁番 | 大同 | 淮北 | 忻州 | 甘南 | 陕西西安 | 日喀则 | 嘉峪关 | 吉林 | 博罗 | 漳州 | 鄢陵 | 湖北武汉 | 宿迁 | 南阳 | 榆林 | 如东 | 屯昌 | 贺州 | 榆林 | 喀什 | 株洲 | 黄石 | 乐清 | 无锡 | 安岳 | 鞍山 | 淮安 | 河源 | 汉川 | 曹县 | 牡丹江 | 达州 | 赵县 | 随州 | 防城港 | 南京 | 江西南昌 | 天门 | 大连 | 晋江 | 滁州 | 玉树 | 莒县 | 四川成都 | 南阳 | 新疆乌鲁木齐 | 张掖 | 邯郸 | 澄迈 | 湘西 | 铜仁 | 菏泽 | 阿克苏 | 邹平 | 鹤壁 | 大连 | 绍兴 | 邯郸 | 温岭 | 韶关 | 云南昆明 | 沛县 | 秦皇岛 | 桐乡 | 南安 | 宿迁 | 鄢陵 | 莱州 | 衡水 | 南充 | 恩施 | 盐城 | 营口 | 朝阳 | 义乌 | 达州 | 枣阳 | 泉州 | 新疆乌鲁木齐 | 博尔塔拉 | 海南 | 铁岭 | 三沙 | 项城 | 昆山 | 青海西宁 | 昆山 | 池州 | 承德 | 河源 | 宁国 | 渭南 | 潮州 | 盘锦 | 台山 | 阿勒泰 | 丽水 | 顺德 | 巴彦淖尔市 | 铜陵 | 新泰 | 香港香港 | 淮安 | 榆林 | 诸城 | 泗洪 | 扬中 | 陕西西安 | 娄底 | 漯河 | 四川成都 | 垦利 | 改则 | 神农架 | 海宁 | 曹县 | 诸暨 | 乌兰察布 | 玉溪 | 常州 | 平潭 | 巢湖 | 怀化 | 昌都 | 巴彦淖尔市 | 曲靖 | 六安 | 新沂 | 顺德 | 鹤岗 | 燕郊 | 陵水 | 陇南 | 大庆 | 贺州 | 甘南 | 长治 | 咸阳 | 陕西西安 | 舟山 | 商洛 | 云浮 | 乳山 | 博尔塔拉 | 滁州 | 六盘水 | 海西 | 石狮 | 陇南 | 衢州 | 巴彦淖尔市 | 通辽 | 赣州 | 兴化 | 赵县 | 禹州 | 屯昌 | 基隆 | 宣城 | 玉环 | 赵县 | 阿克苏 | 莱州 | 随州 | 崇左 | 乳山 | 青州 | 云浮 | 伊春 | 泸州 | 绥化 | 寿光 | 九江 | 红河 | 黄石 | 舟山 | 那曲 | 琼中 | 梅州 | 内蒙古呼和浩特 | 延安 | 临汾 | 德阳 | 万宁 | 阜阳 | 垦利 | 鹤岗 | 淮北 | 湛江 | 丹阳 | 临海 | 海拉尔 | 慈溪 | 莆田 | 长兴 | 昭通 | 海丰 | 台中 | 贵州贵阳 | 吴忠 | 保亭 | 潍坊 | 山东青岛 | 宣城 | 莱芜 | 大连 | 铜川 | 鸡西 | 内蒙古呼和浩特 | 博尔塔拉 | 江门 | 自贡 | 遂宁 | 潍坊 | 广西南宁 | 七台河 | 邳州 | 河南郑州 | 江西南昌 | 萍乡 | 滁州 | 安康 | 河源 | 定西 | 吉林长春 | 邳州 | 株洲 | 赣州 | 烟台 | 信阳 | 益阳 | 枣阳 | 大庆 | 大同 | 威海 | 汕头 | 四川成都 | 吉林长春 | 昌都 | 马鞍山 | 平潭 | 鸡西 | 盘锦 | 萍乡 | 廊坊 | 阿坝 | 辽阳 | 顺德 | 白城 | 乌海 | 仙桃 | 天长 | 儋州 | 九江 | 石河子 | 新泰 | 鄂尔多斯 | 张家口 | 金昌 | 上饶 | 阜新 | 宜宾 | 临沧 | 贺州 | 保亭 | 文山 | 江苏苏州 | 临沂 | 长垣 | 台湾台湾 | 庄河 | 甘孜 | 内蒙古呼和浩特 | 陇南 | 廊坊 | 如皋 | 吉安 | 金坛 | 亳州 | 阿拉善盟 | 汝州 | 张掖 | 如东 | 邳州 | 德阳 | 宝应县 | 宜昌 | 遵义 | 石狮 | 内蒙古呼和浩特 | 云南昆明 | 新泰 | 甘孜 | 上饶 | 龙岩 | 吉林长春 | 辽源 | 枣庄 | 淮北 | 鞍山 | 灌云 | 河源 | 宜都 | 怀化 | 鸡西 | 山东青岛 | 淮南 | 宜春 | 贵港 | 乳山 | 濮阳 | 宁德 | 黄冈 | 金昌 | 惠东 | 吉林长春 | 乐平 | 临沂 | 泰州 | 嘉善 | 临沂 | 梧州 | 枣庄 | 醴陵 | 莆田 | 珠海 | 益阳 | 慈溪 | 宜昌 | 甘南 | 云浮 | 泰兴 | 驻马店 | 晋江 | 山西太原 | 三明 | 柳州 | 十堰 | 常德 | 天门 | 贵港 | 内蒙古呼和浩特 | 临汾 | 石狮 | 自贡 | 永州 | 慈溪 | 厦门 | 锡林郭勒 | 瑞安 | 阿拉尔 | 延边 | 湘西 | 顺德 | 东海 | 潍坊 | 乳山 | 大连 | 内江 | 乳山 | 阿里 | 来宾 | 张北 | 嘉善 | 赤峰 | 贵港 | 建湖 | 桓台 | 泗阳 | 溧阳 | 赣州 | 吐鲁番 | 金坛 | 百色 | 东莞 | 台山 | 灌南 | 三河 | 张家口 | 辽宁沈阳 | 济源 | 鄂州 | 永州 | 宁德 | 章丘 | 运城 | 台北 | 白城 | 柳州 | 邹平 | 济源 | 丽江 | 辽宁沈阳 | 周口 | 铜陵 | 泉州 | 延边 | 果洛 | 东营 | 张北 | 贺州 | 天长 | 随州 | 梅州 | 台山 | 廊坊 | 金华 | 黄山 | 锦州 | 延边 | 海拉尔 | 赵县 | 阿勒泰 | 长垣 | 绍兴 | 河北石家庄 | 慈溪 | 图木舒克 | 启东 | 崇左 | 永州 | 大理 | 四川成都 | 仙桃 | 福建福州 | 临沂 | 甘南 | 铜陵 | 金华 | 宁夏银川 | 桐乡 | 云南昆明 | 孝感 | 沧州 | 廊坊 | 宁波 | 佛山 | 临汾 | 渭南 | 丽水 | 荆州 | 商丘 | 眉山 | 烟台 | 大丰 | 泰兴 | 商丘 | 汉川 | 鞍山 | 海南 | 屯昌 | 临汾 | 白城 | 蓬莱 | 承德 | 天长 | 北海 | 大连 | 建湖 | 平潭 | 宝应县 | 南安 | 辽源 | 延边 | 清远 | 灌云 | 中山 | 河源 | 新疆乌鲁木齐 | 和县 | 乐山 | 大同 | 邹平 | 平凉 | 新余 | 阿坝 | 泰安 | 燕郊 | 如东 | 玉环 | 宿州 | 鄂州 | 天长 | 黔南 | 神农架 | 招远 | 金昌 | 荆州 | 三门峡 | 烟台 | 澳门澳门 | 济源 | 福建福州 | 赤峰 | 乌兰察布 | 恩施 | 济源 | 黄山 | 安庆 | 黄冈 | 果洛 | 澳门澳门 | 新疆乌鲁木齐 | 泰州 | 庄河 | 海宁 | 任丘 | 铜陵 | 吉林 | 大庆 | 山东青岛 | 新沂 | 呼伦贝尔 | 阿坝 | 营口 | 山东青岛 | 三明 | 灌南 | 遂宁 | 公主岭 | 淮安 | 石狮 | 象山 | 沧州 | 庆阳 | 曹县 | 海西 | 盐城 | 景德镇 | 台中 | 鄂尔多斯 | 苍南 | 贵州贵阳 | 楚雄 | 蚌埠 | 临猗 | 临沧 | 那曲 | 扬中 | 延安 | 瓦房店 | 瑞安 | 铜陵 | 淮南 | 南平 | 洛阳 | 眉山 | 单县 | 黄石 | 甘南 | 昌吉 | 香港香港 | 昌吉 | 沧州 | 北海 | 双鸭山 | 武安 | 青州 | 日土 | 克拉玛依 | 滨州 | 海南海口 | 张家口 | 章丘 | 肥城 | 六盘水 | 新泰 | 海安 | 瑞安 | 贵州贵阳 | 长兴 | 衡水 | 贵州贵阳 | 广汉 | 莆田 | 辽宁沈阳 | 定州 | 淮安 | 长垣 | 湛江 | 衡水 | 七台河 | 宜宾 | 仁怀 | 长兴 | 天长 | 渭南 | 临汾 | 韶关 | 清远 | 上饶 | 醴陵 | 唐山 | 乌兰察布 | 雅安 | 常德 | 梧州 | 如皋 | 赤峰 | 抚顺 | 昌吉 | 白城 | 盐城 | 乐清 | 广饶 | 东阳 | 澳门澳门 | 吴忠 | 廊坊 | 常州 | 潍坊 | 果洛 | 琼中 | 郴州 | 毕节 | 阜新 | 乐山 | 衡水 | 资阳 | 垦利 | 济宁 | 燕郊 | 东莞 |