永恒*武乡侯 2024-01-14 10:35 采纳率: 100%
浏览 7
已结题

从诗句中提取电话号码的疑惑

import re
content = """
白日依1918988188899山尽, 黄河入45645546458798978海流。
欲穷12345千里目,  更上15619292345一层楼。
"""
pattern = re.compile("1[3-9]\d{9}")
results = re.findall(pattern, content)

for result in results:
    print(result)

博主,这是我的一个从诗句中提取电话号码的代码,为什么从“1918988188899”中只能提取出19189881888一个电话号码,而不是19189881888和18988188899两个电话号码?不是默认为贪婪模式吗?

  • 写回答

2条回答 默认 最新

  • 游戏开发小Y Unity3D领域新星创作者 2024-01-14 16:01
    关注

    你的正则表达式 1[3-9]\d{9} 的意思是匹配以1开头,第二位是3-9之间的任意数字,后面跟着9位任意数字的字符串。这个正则表达式会匹配到19189881888,但不会匹配到18988188899,因为18988188899的第二位数字是8,不在3-9的范围内。

    如果你想匹配像1918988188899这样的数字,你可以尝试使用以下的正则表达式:

    pattern = re.compile("1[3-9]\d{1,9}(?:\d{1,9})+")
    

    这个正则表达式的意思是:

    • 以1开头,第二位是3-9之间的任意数字。
    • 后面跟着1到9位的任意数字。
    • 这个数字后面可以跟任意数量的相同模式(即由1到9位的数字组成)。

    这样,1[3-9]\d{1,9}(?:\d{1,9})+ 可以匹配到像1918988188899这样的数字,并提取出所有的电话号码。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月14日

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?