首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex不适用于最后几个字符串字母

Regex不适用于最后几个字符串字母
EN

Stack Overflow用户
提问于 2017-10-23 22:57:36
回答 2查看 56关注 0票数 1

这就是我的头像

代码语言:javascript
复制
header = "GET method P2P-DI/1.0\n" +"Host: "+ host+ "\nOS: " + OS + "\nStatus: 404"

通过这样做,我成功地获得了方法:

代码语言:javascript
复制
method = re.search('GET (.*?) P2P-DI/1\.0.*',header).group(1)

我只是想检索状态代码'404‘。返回,无组错误

代码语言:javascript
复制
status = re.search('GET .*Status: ([0-9][0-9][0-9]?)',header).group(1)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-23 23:02:00

你可以试试这个:

代码语言:javascript
复制
import re
status = re.findall('Status: (.*?)$', header)[0]
票数 1
EN

Stack Overflow用户

发布于 2017-10-23 23:15:38

来自文档

本节的最后一个元字符是'.'。 它匹配除了换行符以外的任何东西,并且有一个备用模式(re.DOTALL),它甚至会匹配一个换行符。

因此,只需在参数中指定re.DOTALL,就可以修复代码:

代码语言:javascript
复制
status = re.search('GET .*Status: ([0-9][0-9][0-9]?)', header, re.DOTALL).group(1)
print(status) # 404

作为匹配任何字符的替代方法,您可以使用下列任何结构之一:

代码语言:javascript
复制
[\d\D] # that means 'digit char' or 'non-digit char' => 'any char'
[\w\W] # ...
[\s\S]

就你的例子而言,它可能是:

(请注意,[0-9]等同于\d)

代码语言:javascript
复制
status = re.search('GET [\s\S]*Status: (\d\d\d?)', header).group(1)

此外,对于问题中的实例,只需使用:

代码语言:javascript
复制
status = re.search('Status: (\d+)', header).group(1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46899718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档