我刚开始学习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。我已经尝试了很长一段时间,如果有人能回答我的问题,我会感激不尽。
答案 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)