正则表达式:匹配2个单词之间的所有characteres,返回奇怪的输出

时间:2016-02-23 15:27:04

标签: python regex

在本文中:

"IPAddress":"10.0.0.18","PolicerID":"","IPAddress":"","PolicerID":""

我想要捕获所有ips,在此示例中为10.0.0.18和emptystring

我试图使用这个正则表达式:

  

(小于=" ip地址":&#34)(?*)(?=&#34)

返回10.0.0.18和", 它花了第一个"来自PolicerID而不是最后一个"在IPAddress中。

你能帮帮我吗? 感谢

2 个答案:

答案 0 :(得分:2)

您可以保持简单并只使用捕获组:

>>> str = r'"IPAddress":"10.0.0.18","PolicerID":"","IPAddress":"","PolicerID":""'
>>> print re.findall(r'"IPAddress":"([^"]*)', str)
['10.0.0.18', '']
>>>

但是如果你必须使用lookbehind断言,那么使用这个正则表达式:

(?<="IPAddress":")([^"]*)

([^"]*)是一个否定模式,可以匹配任何不是双引号的字符中的0个或更多。

RegEx Demo

答案 1 :(得分:0)

如果您想要该文本中的所有IP,我会建议使用此正则表达式

[0-9]+(?:\.[0-9]+){3}