python - 使用带有变量的 re.findall 从字符串中提取精确的短语数学
问题描述
真的很抱歉这个愚蠢的问题,我不是程序员,只是网络管理员。您能否用正确的 re.findall 表达式帮助我执行以下操作:我必须从文本字符串中提取一个确切的短语。
匹配短语:“host 192.168.72.2”(空格很重要)
示例文本:
access-list inside extended permit tcp object-group DM_INLINE_NETWORK_555 host 192.168.72.2 object-group DM_INLINE_TCP_35
作为输入 re.findall 得到一个变量。如果我尝试解析一些简单的东西,例如:
object network H_Lin_US01
host 192.168.72.2
这对我来说很好:
kon = []
kon.append("host "+IP_to_search)
kon2 = "host "+IP_to_search
for counter, entry in enumerate(logfile):
entry=entry[1:] #this cuts whitespace before "host" word
match = re.findall("%s\s*$" % kon2, entry)
if match == kon:
它最终返回带有空格的“host xxxx”。
我现在需要返回几乎相同的内容,但前面有任何前置文本 + 一个空格,例如“host 1.1.1.1”。似乎我在这里尝试了所有可能的选项,但它仍然无法按预期工作。非常感谢提前!
解决方案
如果你想要空格,你可以尝试这个模式来搜索:\s{1}host\s\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\s{1}
如果你只想匹配一个特定的 IP 地址,而不是任何 IP 地址,你只需\d{3}\.
用那个 IP 地址替换链,例如:\s{1}host\s{1}123.123.123.123\s{1}
.
\s{1}
将仅找到 1 个空格,\d{1,3}
将找到任何 1-3 个数字组合,并且\.
是用于查找分隔数字组的点的转义字符。
编辑:以上不是一个好的答案。OP 在下面的评论中发布,该评论"if re.search(fr"\bhost\s*{re.escape(IP_to_search)}\b",entry):
有效。请不要将我的答案标记为正确,只是提请注意 OP 的解决方案。
推荐阅读
- python - 使用请求发送具有不同源 IP 的 HTTP 请求
- symfony - RangeType Symfony 与数组 attr
- javascript - 如何执行 JQUERY / JS,屏幕上的通知?
- haskell - 如何访问特定的矩阵元素或使用特定索引 Haskell
- android-studio - 安卓工作室模拟器问题
- excel - Excel 2010 For Next Loop 越来越慢
- android - 已弃用 RoomDatabase 回调
- cors - 如何在芭蕾舞演员中设置 CORS
- php - SQL 语句未将数据插入数据库
- python - odoo 11 @api.onchange() 不适用于 purchase.order.line 中的 price_unit 字段