Olivia姜元 2023-02-18 01:15 采纳率: 60%
浏览 23
已结题

向您请教:正则表达式 语句意义不明

请问我完全不明白这每一句代码什么意思啊,比如index=0是在干什么?matchResult=pattern.search(telNumber,index)又是在干什么?最后一步 index=matchResult.end(2)又是怎么回事?
我正则表达式学的太差了 感谢赐教


import re 
telNumber='''Suppose my Phone No. is 028-32132123,yours is 010-12343244,his is 025-78659811.'''
pattern=re.compile(r'(\d{3,4})-(\d{7,8})')
index=0
telNumberList=[]
while True:
          matchResult=pattern.search(telNumber,index)
          if not matchResult:
              break
          telNumberList.append(matchResult)
          index=matchResult.end(2)

  • 写回答

1条回答 默认 最新

  • 爱学习的小孩子11 2023-02-18 01:49
    关注

    这段代码是 Python 中使用正则表达式匹配电话号码的例子。首先,通过 re.compile() 函数创建了一个匹配电话号码的正则表达式模式,其中 \d 表示数字字符,{3,4} 表示前面的数字字符出现 3 到 4 次,{7,8} 表示后面的数字字符出现 7 到 8 次。

    然后,通过一个 while 循环来搜索字符串 telNumber 中符合该正则表达式模式的电话号码。每次找到一个匹配的结果后,将其加入到 telNumberList 列表中,并将下一次搜索的起始位置设为当前匹配结果的第二个分组(即电话号码的结尾位置)。最后,当所有符合条件的电话号码都被找到后,循环结束。

    需要注意的是,这段代码中的 telNumber 变量是一个多行字符串,其中包含了多个电话号码。如果想要对单个电话号码进行匹配,可以将其作为一个普通字符串传入正则表达式函数中。另外,由于这段代码没有输出结果,因此无法确定是否正确匹配了电话号码。
    如果要输出匹配到的电话号码列表,可以在代码的最后加上以下语句:

        print(matchResult.group(0))
    这段代码会遍历 telNumberList 中的每一个匹配结果,并输出其完整的匹配字符串。matchResult.group(0) 表示匹配结果的第一个分组,即完整的电话号码。如果想要输出电话号码的前三个数字和后四个数字,可以将 group(0) 改为 group(1) 和 group(2),分别表示第一个和第二个分组。
    
    ```完整的代码如下:
    import re 
    
    telNumber='''Suppose my Phone No. is 028-32132123,yours is 010-12343244,his is 025-78659811.'''
    
    pattern=re.compile(r'(\d{3,4})-(\d{7,8})')
    index=0
    telNumberList=[]
    while True:
        matchResult=pattern.search(telNumber,index)
        if not matchResult:
            break
        telNumberList.append(matchResult)
        index=matchResult.end(2)
    
    for matchResult in telNumberList:
        print(matchResult.group(0))
    
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?