专栏首页用户7466307的专栏Python中的正则表达式(二)

Python中的正则表达式(二)

Python中的正则表达式和示例

re模块提供对Python中正则表达式的支持。以下是此模块中的主要方法。

搜索模式的出现

re.search():此方法返回None(如果模式不匹配),或者返回re.MatchObject,其中包含有关字符串的匹配部分的信息。此方法在第一个匹配项后停止,因此它最适合测试正则表达式,而不是提取数据。

import re 
  
# 让我们使用正则表达式来匹配日期字符串
# 以月份名称的形式,后跟日号
regex = r"([a-zA-Z]+) (\d+)"
  
match = re.search(regex, "I was born on June 24") 
  
if match != None: 
  
    # [当表达式"([a-za-Z])(d=)])])]到达此处时,我们到达这里。
    # 与日期字符串匹配。
  
    # 这将打印 +14, 21),因为它匹配在索引 14
    #和结束于 21 。 
    print "Match at index %s, %s" % (match.start(), match.end()) 
  
    # 我们组()方法,以获得所有的匹配和
    # 捕获的组。这些组包含匹配的值。
    # 特别是:
    # match. group (0) 始终返回完全匹配的字符串
    # _ match. 组 (1) 匹配. 组 (2),...返回捕获
    # 按输入字符串中从左到右的顺序组
    # match. group() 等效于 match. group(0)
  
    # 这将打印"6月24日"
    print "Full match: %s" % (match.group(0)) 
  
    # 这将打印 "June"
    print "Month: %s" % (match.group(1)) 
  
    # 打印 "24" 
    print "Day: %s" % (match.group(2)) 
  
else: 
    print "The regex pattern does not match."

输出:

Match at index 14, 21
Full match: June 24
Month: June
Day: 24

匹配文本模式

re.match():此函数尝试将模式匹配到整个字符串。re.match函数成功返回匹配对象,失败则返回None。

re.match(pattern, string, flags=0)

pattern : Regular expression to be matched.
string : String where p attern is searched
flags : We can specify different flags 
        using bitwise OR (|).
import re 
  
# 使用正则表达式的示例函数
# 查找日期的月份和日期。
def findMonthAndDate(string): 
      
    regex = r"([a-zA-Z]+) (\d+)"
    match = re.match(regex, string) 
      
    if match == None:  
        print "Not a valid date"
        return
  
    print "Given Data: %s" % (match.group()) 
    print "Month: %s" % (match.group(1)) 
    print "Day: %s" % (match.group(2)) 
  
      
# 驱动程序代码
findMonthAndDate("Jun 24") 
print("") 
findMonthAndDate("I was born on June 24")

查找所有出现的模式

re.findall():以字符串列表形式返回字符串中所有不重复的模式匹配项。字符串从左到右扫描,并以找到的顺序返回匹配项

# Python 程序,用于演示
# 找到所有 ()
import re 
  
# 一个示例文本字符串,其中正则表达式 
# 被搜索。
string  = """Hello my Number is 123456789 and 
             my friend's number is 987654321"""
  
# 用于查找数字的示例正则表达式。
regex = '\d+'             
  
match = re.findall(regex, string) 
print(match) 
  

输出:

['123456789','987654321']

正则表达式是一个巨大的话题。这是一个完整的库。正则表达式可以做很多事情。您可以匹配,搜索,替换,提取大量数据。例如,下面的小代码是如此强大,以至于它可以从文本中提取电子邮件地址。因此,我们可以使用easy.Lake regex查看python中的Web爬网程序和爬虫。

# 提取所有电子邮件地址并将其添加到结果集
new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", 
                           text, re.I))

本文分享自微信公众号 - 软件测试test(gh_d29759b02f67),作者:Coldrain

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python中的内置异常你知道那些,欢迎留言评论~~~

    错误发生时,Python中会引发一些内置的异常。可以使用local()内置函数来查看这些内置异常,如下所示:

    用户7466307
  • Python带你做个愉快的"动森"玩家! (超简单代码)

    最近Switch上的《动物森友会》可谓是炙手可热,它几乎算是任天堂版的《模拟人生》了,它的最新游戏《集合啦!动物森友会》(以下称“动森”)在发售后,取得了不错的...

    用户7466307
  • JSON到Python(解码)

    JSON字符串解码是借助Python中JSON库的内置方法load()和load()来完成的。这里的转换表显示了从JSON对象到Python对象的示例,这有助于...

    用户7466307
  • Python: 正则表达式实例透析

    经常用match = re.search(pat, str)的形式。因为有可能匹配不到,所以re.search()后面一般用if statement。

    用户2183996
  • [TextMatch框架] QA Match (QA匹配)

    MachineLP
  • 正则表达式

    Jinni
  • 使用ATOMac进行Mac自动化测试

    atomac支持获取和操作大部分的元素,可以使用xcode提供的accessibility inspector快速查看各个元素

    周希
  • 如何用JavaScript进行数组去重

    今天的文章和大家谈一谈如何用JavaScript进行数组去重,这是一道常见的面试(笔试)题,可以很好地考察出一个人的逻辑思维及边界考虑情况,希望此文能够帮助大家...

    个推君
  • Elasticsearch【正则搜索】分析&实践

    在ES中有很多使用不是很频繁的查询,可以达到一些特殊的效果。比如基于行为路径的漏斗模型。本篇就从使用上讲述一下正则表达式查询的用法。 Regexp Que...

    用户1154259
  • 【python正则】工作中常用的pyth

    # 4到16位(字母,数字,下划线,减号) if re.match(r'^[a-zA-Z0-9_-]{4,16}$', "abwc"):   print("匹...

    py3study

扫码关注云+社区

领取腾讯云代金券