lihongya111 2021-04-04 13:06 采纳率: 100%
浏览 34
已采纳

Python 正则表达式输出不符合预期

大佬们,python 小白请教一个正则表达式的问题:

1   编码目的:找到字符串中IP地址的信息

2   编码内容:

import re
pattern = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'
str1 = '127.0.2.3 192.168.4.66'
match = re.findall(pattern,str1)
print(match)

3  编码输出:

[('127.0.2.3', '.3'), ('192.168.4.66', '.66')]

4   疑问:

为什么输出除了预想中的IP地址之外,还有有’.3' 和’.66‘?

5    个人想法:

([1-9]{1,3}(\.[0-9]{1,3}){3}) 应该就是代表了 IP地址的格式,是不是python会先运行一遍外部的小括号内的内容,再运行一遍内部小括号的内容,但是如果是这样的话,为什么运行内部小括号里的内容输出是第三个小数点后的.3 和.66呢,而不是.0和.168,难道{3} 在运行外部小括号时表示重复三次,到内部小括号时{3}虽然在括号外部,但是仍然起作用,表示第三个结果?

 

  • 写回答

1条回答 默认 最新

  • cclxpp123 2021-04-04 14:04
    关注

    括号代表捕获,要消除捕获可以

    pattern = r'([1-9]{1,3}(?:\.[0-9]{1,3}){3})'
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?