从多行文件中获取特定文本

阿涅斯·纳吉亚尔

考虑到文本文件具有多个换行符和空格,我想使用python中的Regex包从文件中过滤某些文本。该文件可能有几个数据块,但唯一需要的是带有特定关键字的数据块。在我的问题中,它应该属于包含“ Route-Details”关键字的组。

假设文件(sample.txt)显示如下。

.
.
.
 Host1<-->Host2 Con. ID:         0x0fc2f0d9  (abc123)
  Con. Information:
     [Gw]  Route-Details 
        R-Code:      0xaaaa (1a2) Route-Details
        Router-ID:     0x21       (a4)  [Gw] 
        Path-Code:    0x00e   (15)
        Data: 123-abcd.djsjdkks www.somesite. port 11

Coded info
                   aa aa aa aa aa aa aa aa   1111-aaa
                   aa aa aa aa aa aa aa aa   1111-aaa
.
.
.

这是我写的

import re
with open("sample.txt", "r") as fl:
    in_file= fl.read()

(re.search('(?<=Route-Details).* Data:', in_file,re.DOTALL).group())

我希望得到这个。

123-abcd.djsjdkks www.somesite. port 11

但是,我明白了。

R-Code:      0xaaaa (1a2) Route-Details
        Router-ID:     0x21       (a4)  [Gw] 
        Path-Code:    0x00e   (15)
        Data:

我想知道是否可以为此获得简化和详细的解决方案。非常感谢你的帮助。

rahlf23

您可以使用正向后向捕获组:

re.findall(r'(?<=Data: )(.*?)\n', text)

产量:

['123-abcd.djsjdkks www.somesite. port 11']

此外,您可以尝试以下操作以包括Route-Details您指定条件:

re.findall(r'(?<=Route-Details).*?(?<=Data: )(.*?)\n', text, re.DOTALL)

有关详细说明,请参见此处另外,re.DOTALL指定.字符将匹配所有字符,包括换行符

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章