import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\\w+(?=\\s+OBJECT-TYPE)";
final String string = "STEELHEAD-MIB DEFINITIONS ::= BEGIN\n\n"
+ "IMPORTS\n"
+ " OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, Unsigned32,\n"
+ " TimeTicks, IpAddress, Counter32, Counter64 FROM SNMPv2-SMI\n"
+ " DateAndTime FROM SNMPv2-TC\n"
+ " products FROM RBT-MIB;\n\n"
+ "steelhead MODULE-IDENTITY\n"
+ " LAST-UPDATED \"201401070000Z\"\n"
+ " ORGANIZATION \"Riverbed Technology, Inc.\"\n"
+ " CONTACT-INFO\n"
+ " \" Riverbed Technical Support\n"
+ " support@riverbed.com\"\n"
+ " DESCRIPTION \"Steelhead MIB\"\n"
+ " REVISION \"201401070000Z\"\n"
+ " DESCRIPTION \"Connection forwarding cluster incompatible trap\"\n"
+ " REVISION \"201301250000Z\"\n"
+ " DESCRIPTION \"Corrections in descriptions of some traps\"\n"
+ " REVISION \"201210170000Z\"\n"
+ " DESCRIPTION \"Added trap for CF Peer IPv6 incompatible alarm\"\n"
+ " REVISION \"201202030000Z\"\n"
+ " DESCRIPTION \"Updated for 7.0.1\"\n"
+ " ::= { products 1 }\n\n"
+ "system OBJECT IDENTIFIER\n"
+ " ::= { steelhead 1 }\n\n"
+ "status OBJECT IDENTIFIER\n"
+ " ::= { steelhead 2 }\n\n"
+ "config OBJECT IDENTIFIER\n"
+ " ::= { steelhead 3 }\n\n"
+ "alarms OBJECT IDENTIFIER\n"
+ " ::= { steelhead 4 }\n\n"
+ "statistics OBJECT IDENTIFIER\n"
+ " ::= { steelhead 5 }\n\n"
+ "--\n"
+ "--\n"
+ "-- SYSTEM\n"
+ "--\n"
+ "--\n\n"
+ "model OBJECT-TYPE\n"
+ " SYNTAX OCTET STRING\n"
+ " MAX-ACCESS read-only\n"
+ " STATUS current\n"
+ " DESCRIPTION\n"
+ " \"Appliance model\"\n"
+ " ::= { system 1 }\n\n"
+ "serialNumber OBJECT-TYPE\n"
+ " SYNTAX OCTET STRING\n"
+ " MAX-ACCESS read-only\n"
+ " STATUS current\n"
+ " DESCRIPTION\n"
+ " \"Appliance serial number\"\n"
+ " ::= { system 2 }\n\n"
+ "systemVersion OBJECT-TYPE\n"
+ " SYNTAX OCTET STRING\n"
+ " MAX-ACCESS read-only\n"
+ " STATUS current\n"
+ " DESCRIPTION\n"
+ " \"System software version string\"\n"
+ " ::= { system 3 }\n\n\n\n"
+ "--\n"
+ "--\n"
+ "-- STATUS\n"
+ "--\n"
+ "--\n\n"
+ "systemClock OBJECT-TYPE\n"
+ " SYNTAX DateAndTime\n"
+ " MAX-ACCESS read-only\n"
+ " STATUS current\n"
+ " DESCRIPTION\n"
+ " \"System clock time\"\n"
+ " ::= { status 1 }\n\n"
+ "health OBJECT-TYPE\n"
+ " SYNTAX OCTET STRING\n"
+ " MAX-ACCESS read-only\n"
+ " STATUS current\n"
+ " DESCRIPTION\n"
+ " \"Current health of the system. The value is one amongst\n"
+ " Healthy, Admission Control, Degraded, Critical\"\n"
+ " ::= { status 2 }\n\n"
+ "serviceStatus OBJECT-TYPE\n"
+ " SYNTAX OCTET STRING\n"
+ " MAX-ACCESS read-only\n"
+ " STATUS current\n"
+ " DESCRIPTION\n"
+ " \"Current status of the optimization service\"\n"
+ " ::= { status 3 }";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | 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