use strict;
my $str = '[access-control]
realm-id = "name2"
description = "Register_to_Bryansk_RTU"
source-address = "0.0.0.0"
destination-address = "0.0.0.0:5060"
application-protocol = "SIP"
transport-protocol = "ALL"
[access-control]
access = "permit"
average-rate-limit = "0"
trust-level = "high"
minimum-reserved-bandwidth = "0"
invalid-signal-threshold = "0"
maximum-signal-threshold = "0"
[access-control]
untrusted-signal-threshold = "0"
nat-trust-threshold = "0"
max-endpoints-per-nat = "0"
nat-invalid-message-threshold = "0"
deny-period = "30"
cac-failure-threshold = "0"
untrust-cac-failure-threshold = "0"
[access-control]
last-modified-by = "admin@0.0.0.0"
last-modified-date = "2015-01-22 09:01:19"
[access-control]
realm-id = "name"
description = ""
source-address = "0.0.0.0"
destination-address = "0.0.0.0:5060"
application-protocol = "SIP"
transport-protocol = "ALL"
access = "permit"
average-rate-limit = "0"
trust-level = "high"
minimum-reserved-bandwidth = "0"
invalid-signal-threshold = "0"
maximum-signal-threshold = "0"
untrusted-signal-threshold = "0"
nat-trust-threshold = "0"
max-endpoints-per-nat = "0"
nat-invalid-message-threshold = "0"
deny-period = "30"
cac-failure-threshold = "0"
untrust-cac-failure-threshold = "0"
last-modified-by = "admin@0.0.0.0"
last-modified-date = "2014-10-23 11:26:39"';
my $regex = qr/^\[[a-z-]*\]\s[\w\d\s\-\=\"\.\:\@]+/p;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html