Записи такие:
Код: Выделить всё
host example1 {
option host-name "example1";
ddns-hostname "example1";
fixed-address 192.168.1.181;
}
host example2 {
hardware ethernet aa:bb:ff:20:fa:13;
fixed-address 192.168.1.191;
option host-name "example2";
ddns-hostname "example2";
}
Код: Выделить всё
def get_hosts(s):
grammar = """
config: hosts*=host ;
host: 'host' hostname=ID '{'
(
('hardware ethernet' hardware_ethernet=/[0-9a-fA-F:]+/';')?
'fixed-address' fixed_address=/([0-9]{1,3}\.){3}[0-9]{1,3}/';'
('option host-name' option_host_name=STRING';')?
('ddns-hostname' ddns_hostname=STRING';')?
)#
'}'
;
"""
mm = metamodel_from_str(grammar)
model = mm.model_from_str(s)
for host in model.hosts:
print host.hostname, host.fixed_address
Я, конечно, могу извлечь только записи хоста, используя регулярные выражения, и проанализировать их отдельно, но мне интересно, есть ли какой-нибудь способ заставить textX извлекать только хост< /code> записывает данные из файла и игнорирует остальное содержимое?
Подробнее здесь: https://stackoverflow.com/questions/533 ... with-textx
Мобильная версия