我需要将一些http数据作为字符串从我的字符串格式的http数据包中转储,我试图使用下面的正则表达式来匹配数据:'以及之后的所有内容,它不是工作。我是regex和python的新手
>>>import re
>>>pat=re.compile(r'(?:/bdata:/b)?\w$')
>>>string=" dnfhndkn data: ndknfdjoj pop"
>>>res=re.match(pat,string)
>>>print res
None
答案 0 :(得分:6)
re.match
仅匹配字符串的开头。使用re.search
可以在任何位置进行匹配。 (见search()
vs. match()
)
>>> import re
>>> pat = re.compile(r'(?:/bdata:/b)?\w$')
>>> string = " dnfhndkn data: ndknfdjoj pop"
>>> res = re.search(pat,string)
>>> res
<_sre.SRE_Match object at 0x0000000002838100>
>>> res.group()
'p'
要匹配所有内容,您需要使用\w
更改.*
。同时删除/b
。
>>> import re
>>> pat = re.compile(r'(?:data:).*$')
>>> string = " dnfhndkn data: ndknfdjoj pop"
>>> res = re.search(pat,string)
>>> print res.group()
data: ndknfdjoj pop
答案 1 :(得分:2)
这里不需要正则表达式。你可以切片:
>>> string
' dnfhndkn data: ndknfdjoj pop'
>>> string.index('data')
10
>>> string[string.index('data'):]
'data: ndknfdjoj pop'
str.index('data')
返回字符串中找到子字符串data
的点。从此位置到结尾string[10:]
的切片为您提供了您感兴趣的字符串部分。
顺便说一下,如果您计划在任何时候使用string
module,string
是一个可能存在问题的变量名称......
答案 2 :(得分:1)
你可以这样做:
string.split("data:")[1]
假设&#34;数据:&#34;每个字符串中只出现一次