gpt4 book ai didi

python - 使用正则表达式解析大文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:51 24 4
gpt4 key购买 nike

我有一个大文本文件 (60Mb),如下所示:

:VPN ()
:add_adtr_rule (true)
:additional_products ()
:addr_type_indication (IPv4)
:certificates ()
:color (black)
:comments ()
:connectra (false)
:connectra_settings ()
:cp_products_installed (false)
:data_source (not-installed)
:data_source_settings ()
:edges ()
:enforce_gtp_rate_limit (false)
:firewall (not-installed)
:floodgate (not-installed)
:gtp_rate_limit (2048)
:interfaces ()
:ipaddr (10.19.45.18)

对于每个 :add_adtr_rule 为 true 的实例,都有数以千计的“:add_adtr_rule (false)”条目,我需要 ipaddr 的值 - 所以在这个实例中我需要 10.19.45.18。我如何使用正则表达式来提取此信息。

我试过下面的代码,它返回一个空列表:

import re

with open("objects_5_0_C-Mod.txt", "r") as f:
text = f.read()

ip=re.findall(r':add_adtr_rule [\(]true[\)]\s+.*\s+.*\s+.*\s+.*\s+:ipaddr\s+[\(](.*)[\)]', text)
print(ip)

最佳答案

下面的正则表达式应该做到这一点:

(?s)(?:add_adtr_rule\s\(true\)).*?:ipaddr\s\((.*?)\)

参见 regex demo / explanation

python ( demo )

import re

s = """:VPN () :add_adtr_rule (true) :additional_products () :addr_type_indication (IPv4) :certificates () :color (black) :comments () :connectra (false) :connectra_settings () :cp_products_installed (false) :data_source (not-installed) :data_source_settings () :edges () :enforce_gtp_rate_limit (false) :firewall (not-installed) :floodgate (not-installed) :gtp_rate_limit (2048) :interfaces () :ipaddr (10.19.45.18)"""
r = r"(?s)(?:add_adtr_rule\s\(true\)).*?:ipaddr\s\((.*?)\)"
ip = re.findall(r, s)
print (ip)

关于python - 使用正则表达式解析大文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42633707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com