Python中的正则表达式? 5

pattern=r"([1-9]{1,3}(\.[0-9]{1,3}){3})"str1="127.0.0.1"match=re.findall(pattern,str1... pattern = r"([1-9]{1,3}(\.[0-9]{1,3}){3})"
str1 = "127.0.0.1"
match = re.findall(pattern,str1)
print(match)

输出显示:[('127.0.0.1', '.1')]

为什么会多出一个‘.1’不理解,怎么才能解决
展开
 我来答
xgn911
2022-10-30 · TA获得超过1364个赞
知道小有建树答主
回答量:1493
采纳率:96%
帮助的人:656万
展开全部

因为正则表达式中有两组小括号,即两个分组

findall会以元组形式返回所有分组中的内容,即[('127.0.0.1', '.1')]

其中'127.0.01'表示匹配最外层大括号的内容

'.1'表示匹配'\.[0-9]{1,3}'的内容(最后一次重复时为.1)

由于('\.[0-9]{1,3}')为需要重复三次的分组,该括号不能省略

而使用findall就一定会显示括号分组的内容

若想只显示127.0.0.1而不显示'.1',可考虑使用match方法

返回从字符串起始位置开始,第一次匹配正则表达式的内容

match返回的结果为re.Match对象,可通过group()显示匹配的字符串,即127.0.0.1

通过groups()显示匹配的所有分组,即('127.0.0.1', '.1')

如图所示:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式