regex - Regexp to find all subnet blocks in config file -



regex - Regexp to find all subnet blocks in config file -

i have such config file:

#dhcp server configuration file. deny unknown-clients; subnet 10.8.140.2 netmask 255.255.255.255 { host example{ optian:param; } host example2{ option2:param2; } } subnet 20.8.110.1 netmask 255.255.255.255 { }

and need find subnet blocks. problem subnet block can contain host blocks (with curly brackets). , cant build regexp match those.

so result should be: 1. subnet 10.8.140.2 netmask 255.255.255.255 { ... host {...} host{...}} 2. subnet 20.8.110.1 netmask 255.255.255.255 { ... }

you didn't named programming language. here comes illustration using recursive pattern in php (pcre):

class="lang-php prettyprint-override"><?php $conf = file_get_contents('/path/to/dhcp.conf'); # utilize recursive pattern, check link posted above $pattern = '/(subnet.*?)?\{((?>[^{}]+)|(?r))*\}/'; preg_match_all($pattern, $conf, $matches); foreach($matches[0] $match) { echo $match . php_eol . php_eol; }

php uses perl compatible regexes, can utilize same pattern in perl or other languages utilize same engine , back upwards recursion.

btw, syntax higlighter seems have fun pattern, not syntax error.

online example

regex

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -