0

我需要解析一个字符串并从中读取一个特定的子字符串。我需要解析的字符串如下:

domain
(
    (device
          (console
               (xxxxxx)
               (XXXXXX)
          )
    )
)

domain
(
    (device
          (vfb
               (xxxxxx)
               (location : 5903)
          )
    )
)

这只是一个示例字符串。实际的字符串可能包含许多这样的子字符串。我需要仅从“vfb”子字符串中获取位置字段的值。我尝试了 findall 和 search 功能如下

import re
text=re.search('(device(vfb(.*?)))',stringname)

import re
text=re.findall('(device(vfb(.*?)))',stringname,re.DOTALL)

但我总是得到空字符串。有没有简单的方法来做到这一点?谢谢

4

3 回答 3

1

你为什么不只寻找location键值对呢?

>>> re.findall(r'(\w+) : (\w+)', s)
    [('location', '5903')]
于 2012-12-26T07:14:47.633 回答
0

简单的python脚本:

fp = open("input.txt", "r")

data = fp.readlines()
for line in data:

    if "location" in line:
        print line.split(":")[1].split(")")[0].strip()

fp.close()
于 2012-12-26T07:21:26.647 回答
0
re.findall(r'device.*?\(vfb.*\(.*\).*(\(.*?\))', s, re.DOTALL)
于 2012-12-26T07:54:53.597 回答