import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\\s*(enum[^\\{]*)\\s*(\\{)\\s*([^\\}]+)\\s*(\\};)";
final String string = "#include <iostream>\n"
+ " \n"
+ "// enum that takes 16 bits\n"
+ "enum smallenum: int16_t\n"
+ "{\n"
+ " a,\n"
+ " b,\n"
+ " c\n"
+ "};\n"
+ " \n"
+ " \n"
+ "// color may be red (value 0), yellow (value 1), green (value 20), or blue (value 21)\n"
+ "enum color\n"
+ "{\n"
+ " red,\n"
+ " yellow,\n"
+ " green = 20,\n"
+ " blue\n"
+ "};\n"
+ " \n"
+ "// altitude may be altitude::high or altitude::low\n"
+ "enum class altitude: char\n"
+ "{ \n"
+ " high='h',\n"
+ " low='l', // C++11 allows the extra comma\n"
+ "}; \n"
+ " \n"
+ "// the constant d is 0, the constant e is 1, the constant f is 3\n"
+ "enum\n"
+ "{\n"
+ " d,\n"
+ " e,\n"
+ " f = e + 2\n"
+ "};\n"
+ " \n"
+ "//enumeration types (both scoped and unscoped) can have overloaded operators\n"
+ "std::ostream& operator<<(std::ostream& os, color c)\n"
+ "{\n"
+ " switch(c)\n"
+ " {\n"
+ " case red : os << \"red\"; break;\n"
+ " case yellow: os << \"yellow\"; break;\n"
+ " case green : os << \"green\"; break;\n"
+ " case blue : os << \"blue\"; break;\n"
+ " default : os.setstate(std::ios_base::failbit);\n"
+ " }\n"
+ " return os;\n"
+ "}\n"
+ " \n"
+ "std::ostream& operator<<(std::ostream& os, altitude al)\n"
+ "{\n"
+ " return os << static_cast<char>(al);\n"
+ "}\n"
+ " \n"
+ "int main()\n"
+ "{\n"
+ " color col = red;\n"
+ " altitude a;\n"
+ " a = altitude::low;\n"
+ " \n"
+ " std::cout << \"col = \" << col << '\\n'\n"
+ " << \"a = \" << a << '\\n'\n"
+ " << \"f = \" << f << '\\n';\n"
+ "}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
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