![](/img/trans.png)
[英]How to lookup string in text file and output specific lines above and below
[英]How to match lines of text above and below a certain string up to another string - RegEx
如何使用Regex(python引擎)查找某个字符串,将其上方的几行以及其后的所有文本匹配,直到另一个指定的字符串? 文本来自日志文件,几乎所有值都是动态的。 我只找到一个常量字符串,它位于我要捕获的块的中间。 例如:
这是我不想匹配的文本行。
这是我要匹配的一行文本。
这是我要匹配的一行文本。
要匹配的字符串
我要捕获的文本和数字行以及其他标记abc123:/()&。
我要捕获的文本和数字行以及其他标记abc123:/()&。
我要捕获的文本和数字行以及其他标记abc123:/()&。
字符串以结尾但不捕获
我不想要的文字
我不想要的文字
我可能还应该注意,这些行中的大多数不仅可以包含文本,还可以包含数字和其他标点符号,我需要获取所有这些内容。 如果有人能指出正确的方向,我将非常感谢您的帮助。 谢谢!
编辑
这是来自日志文件的真实示例,其中已删除某些值:
Tue Oct 0 00:00:00 UTC 0000
A:REDACTED# REDACTED 7/1/8
==============================================================
Ethernet Interface
===============================================================
Description : REDACTED
Interface : 0/0/0 Oper Speed : 10 Gbps
Link-level : Ethernet Config Speed : N/A
Admin State : up Oper Duplex : full
Oper State : up Config Duplex : N/A
Physical Link : Yes MTU : 2004
Single Fiber Mode : No Min Frame Length : 64 Bytes
IfIndex : REDACTED Hold time up : 90 seconds
我需要使用“以太网接口”作为文本来捕获除第一行和最后一行以外的所有内容。
我尝试过这样的事情: (?<=Ethernet Interface)(.*)(?=IfIndex)
但这仅捕获了我需要的后半部分。 如何添加第一部分?
尝试以下模式: (?=(.+\\n){2}String to match)[\\w\\W]+(?=String to end on but NOT capture)
说明:它向前看 (?=(.+\\n){2}String to match)
,这意味着确保接下来是2行.+\\n
(在这里您需要指定在字符串之前多少行)想要匹配)和String to match
。 如果为true,则开始匹配由[\\w\\W]+
表示的每个字符,直到位置,然后是String to end but NOT capture
,这是通过(?=String to end on but NOT capture)
(再次-正向前进)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.