import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?sm)interface (\\S*)(?:(?!^!$).)*port-security.*?!$";
final String string = "interface Vlan1\n"
+ " no ip address\n"
+ " shutdown\n"
+ "!\n"
+ "interface Vlan10\n"
+ " ip address 10.0.0.1 255.2555.255.0\n"
+ " no ip route-cache\n"
+ "!\n"
+ "interface Vlan20\n"
+ " no ip address\n"
+ "!\n"
+ "interface GigabitEthernet1/0/5\n"
+ " description PC-05\n"
+ " switchport access vlan 20\n"
+ " switchport mode access\n"
+ " switchport nonegotiate\n"
+ " shutdown\n"
+ " spanning-tree portfast\n"
+ " spanning-tree bpduguard enable\n"
+ "!\n"
+ "interface GigabitEthernet1/0/6\n"
+ " description PC-06\n"
+ " switchport access vlan 10\n"
+ " switchport mode access\n"
+ " switchport nonegotiate\n"
+ " switchport port-security maximum 2\n"
+ " switchport port-security aging time 2\n"
+ " switchport port-security violation restrict\n"
+ " switchport port-security mac-address aaaa.aaaa.aaaa vlan access\n"
+ " switchport port-security mac-address bbbb.bbbb.bbbb vlan access\n"
+ " spanning-tree portfast\n"
+ " spanning-tree bpduguard enable\n"
+ "!\n"
+ "end";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html