有谁知道如何从文本中输出给定格式的字符串?

时间:2017-01-06 02:02:50

标签: python

我刚开始学习Python,我对如何从文本中找到给定格式的所有字符串元素感到困惑。例如:

#  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
#
#
alert tcp $HOME_NET any -> 50.116.1.225 22 (msg:"ET CNC Shadowserver Reported CnC Server Port 22 Group 1"; flow:to_server; flags:S; reference:url,doc.emergingthreats.net/bin/view/Main/BotCC; reference:url,www.shadowserver.org; threshold: type limit, track by_src, seconds 360, count 1; classtype:trojan-activity; flowbits:set,ET.Evil; flowbits:set,ET.BotccIP; sid:2405000; rev:4483;)

这是整篇文章的一小部分,我要做的是从文本中获取所有IP地址,如50.116.1.225 22。我已经尝试了很长一段时间,如果有人能回答我的问题,我会感激不尽。

2 个答案:

答案 0 :(得分:1)

听起来你会想要使用正则表达式。如果我正确理解了这些问题,如果您的文本已经是一个名为alerts的字符串(未指明您的文本),则以下内容很简单但并不完美:

import re

results = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", alerts)

for item in results:
    print(item)

输出:

50.116.1.225

答案 1 :(得分:1)

您可能想要使用正则表达式。这使您可以从字符串中提取特定的字符模式。

import re

pat = re.compile(r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
                  (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b')

for ip in re.findall(pat, text):
     print(ip)